LISTVIEW - SO SALVA PRIMEIRA LINHA

SANROMAN 29/10/2013 11:46:48
#430482
Boa tarde

Tenho uma listview com quatro colunas. Se tenho apenas um item na list grava no BD, mas se possuo dois ou mais itens só salva o primeiro e dá um aviso como segue:

O nome da variável [ô]@NomeProduto[ô] já foi declarada. O Nome de variáveis devem ser exclusivos em um lote de consultas ou em um procedimento armazenado.

Segue o código para avaliação do possíveis erros que estou cometendo:

Private Sub btnFinalizaVenda_Click(sender As Object, e As EventArgs) Handles btnFinalizaVenda.Click

If txtTotalVenda.Text = [Ô][Ô] Then
MsgBox([Ô]Não exite nenhum produto vendido.[Ô], MsgBoxStyle.Critical, [Ô]ATENÇÃO[Ô])
txtCodigoBarra.Focus()
Else
Try
sqlCon.Open()

With sqlCmd
.CommandType = CommandType.Text
.CommandText = [Ô][Ô]

For Each ListViewItem In listVendaDireta.Items

.CommandText = [Ô]INSERT INTO TB_VendaBalcao (NomeProduto, PrecoUnitario, Quantidade, TotalItem) VALUES (@NomeProduto, @PrecoUNitario, @Quantidade, @TotalItem)[Ô]

.Connection = sqlCon

.Parameters.Add(New SqlParameter([Ô]@NomeProduto[Ô], SqlDbType.NVarChar)).Value = listVendaDireta.Items(0).Text
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = listVendaDireta.Items(0).SubItems(1).Text
.Parameters.Add(New SqlParameter([Ô]@Quantidade[Ô], SqlDbType.Int)).Value = listVendaDireta.Items(0).SubItems(2).Text
.Parameters.Add(New SqlParameter([Ô]@TotalItem[Ô], SqlDbType.Decimal)).Value = listVendaDireta.Items(0).SubItems(3).Text

sqlCmd.ExecuteNonQuery()

Next
End With

Catch ex As Exception
MsgBox(ex.Message)
Finally
sqlCon.Dispose()
sqlCmd.Dispose()


End Try

frmFinalizaVenda.txtTotalCompra.Text = txtTotalVenda.Text
frmFinalizaVenda.ShowDialog()
End If
End Sub

Se puderem me ajudar, desde já agradeço
MADMAX 29/10/2013 13:56:07
#430493
Resposta escolhida
Voce não esta limpando os parametros anteriores e assim cria uma duplicidade .. ai esta a correção fiz a limpeza dos parametros assim que a query e executada ;


Private Sub btnFinalizaVenda_Click(sender As Object, e As EventArgs) Handles btnFinalizaVenda.Click

If txtTotalVenda.Text = [Ô][Ô] Then
MsgBox([Ô]Não exite nenhum produto vendido.[Ô], MsgBoxStyle.Critical, [Ô]ATENÇÃO[Ô])
txtCodigoBarra.Focus()
Else
Try
sqlCon.Open()

With sqlCmd
.CommandType = CommandType.Text
.CommandText = [Ô][Ô]

For Each ListViewItem In listVendaDireta.Items

.CommandText = [Ô]INSERT INTO TB_VendaBalcao (NomeProduto, PrecoUnitario, Quantidade, TotalItem) VALUES (@NomeProduto, @PrecoUNitario, @Quantidade, @TotalItem)[Ô]

.Connection = sqlCon

.Parameters.Add(New SqlParameter([Ô]@NomeProduto[Ô], SqlDbType.NVarChar)).Value = listVendaDireta.Items(0).Text
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = listVendaDireta.Items(0).SubItems(1).Text
.Parameters.Add(New SqlParameter([Ô]@Quantidade[Ô], SqlDbType.Int)).Value = listVendaDireta.Items(0).SubItems(2).Text
.Parameters.Add(New SqlParameter([Ô]@TotalItem[Ô], SqlDbType.Decimal)).Value = listVendaDireta.Items(0).SubItems(3).Text

sqlCmd.ExecuteNonQuery()
.Parameters.Clear();
Next
End With

Catch ex As Exception
MsgBox(ex.Message)
Finally
sqlCon.Dispose()
sqlCmd.Dispose()


End Try

frmFinalizaVenda.txtTotalCompra.Text = txtTotalVenda.Text
frmFinalizaVenda.ShowDialog()
End If
End Sub
SANROMAN 29/10/2013 15:24:48
#430503
MadMax

Muito obrigado novamente. Problema Resolvido.
Tópico encerrado , respostas não são mais permitidas