SALVAR CAMPO VAZIO DE LISTVIEW COMO NULO
Boa noite,
Estou tentando salvar valores de um listview com valores nulos e não estou conseguindo.
Se todos as colunas do listview estão preenchidas salva normalmente. mas se as colunas estão vazias não.
Estou usando o seguinte código para salvar a listview:
[code vbnet] If listProdComanda.Items(i).SubItems(1).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = listProdComanda.Items(i).SubItems(1).Text
End If
If listProdComanda.Items(i).SubItems(2).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(2).Text
End If
If listProdComanda.Items(i).SubItems(3).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(3).Text
End If
If listProdComanda.Items(i).SubItems(4).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(4).Text
End If [/code}
Fico no aguardo e desde já agradeço.
Estou tentando salvar valores de um listview com valores nulos e não estou conseguindo.
Se todos as colunas do listview estão preenchidas salva normalmente. mas se as colunas estão vazias não.
Estou usando o seguinte código para salvar a listview:
[code vbnet] If listProdComanda.Items(i).SubItems(1).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = listProdComanda.Items(i).SubItems(1).Text
End If
If listProdComanda.Items(i).SubItems(2).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(2).Text
End If
If listProdComanda.Items(i).SubItems(3).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(3).Text
End If
If listProdComanda.Items(i).SubItems(4).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(4).Text
End If [/code}
Fico no aguardo e desde já agradeço.
Qual erro é gerado?
Boa noite JABA
Se as colunas estão vazias não da erro nenhum e não salva nenhum dado no banco de dados
Se esta com todas as colunas do listview com valores salva corretamente no banco de dados.
Até mais e tomara que possa me ajudar
Se as colunas estão vazias não da erro nenhum e não salva nenhum dado no banco de dados
Se esta com todas as colunas do listview com valores salva corretamente no banco de dados.
Até mais e tomara que possa me ajudar
Eu acho que está dando um erro e ele não está aparecendo na tela por causa de um tratamento que você não está fazendo. Faça o seguinte: Use o depurador, linha por linha, até o encerramento da rotina e veja se gera um erro. Qualquer coisa posta aà o que aconteceu.
Bom dia, JABA
Acho que o erro está no for que uso para inserir dados no banco de dados, dá uma olhada:
[code vbnet]
Private Sub inserirComanda()
Try
sqlCon.Open()
With sqlCmd
.CommandType = CommandType.Text
.CommandText = [Ô][Ô]
.CommandText = [Ô]INSERT INTO TB_VendaComanda (DataVenda, NumVenda, ComandaNum, CodFunc, Atendente, HoraEnt, HoraSaida, Ocupantes, [Ô] & _
[Ô]Valor, Credito, Qtde, CodProd, Produto, PrecoUnitario, NomeCliente, CPF, CodCliente)[Ô] & _
[Ô]VALUES (@DataVenda, @NumVenda, @ComandaNum, @CodFunc, @Atendente, @HoraEnt, @HoraSaida, @Ocupantes, @Valor, [Ô] & _
[Ô]@Credito, @Qtde, @CodProd, @Produto, @PrecoUnitario, @NomeCliente, @CPF, @CodCliente)[Ô]
For i As Integer = 0 To listProdComanda.Items.Count - 1
.Connection = sqlCon
If listProdComanda.Items(i).SubItems(0).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@CodProd[Ô], SqlDbType.Int)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@CodProd[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(0).Text
End If
If listProdComanda.Items(i).SubItems(1).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = listProdComanda.Items(i).SubItems(1).Text
End If
If listProdComanda.Items(i).SubItems(2).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(2).Text
End If
If listProdComanda.Items(i).SubItems(3).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(3).Text
End If
If listProdComanda.Items(i).SubItems(4).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(4).Text
End If
.Parameters.Add(New SqlParameter([Ô]@DataVenda[Ô], SqlDbType.Date)).Value = txtDataVendaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NumVenda[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@ComandaNum[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodFunc[Ô], SqlDbType.Int)).Value = txtCodFuncComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Atendente[Ô], SqlDbType.NVarChar)).Value = txtAtendenteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraEnt[Ô], SqlDbType.Time)).Value = txtHoraEntComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraSaida[Ô], SqlDbType.Time)).Value = txtHoraSaidaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Ocupantes[Ô], SqlDbType.NVarChar)).Value = txtOcupantesComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Credito[Ô], SqlDbType.Decimal)).Value = txtCreditoComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NomeCliente[Ô], SqlDbType.NVarChar)).Value = txtNomeClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CPF[Ô], SqlDbType.NVarChar)).Value = txtCPFClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodCliente[Ô], SqlDbType.Int)).Value = txtCodClienteComanda.Text
sqlCmd.ExecuteNonQuery()
.Parameters.Clear()
Next
End With
Catch ex As Exception
MsgBox(ex.ToString)
Finally
sqlCmd.Parameters.Clear()
sqlCon.Close()
End Try
End Sub [/code]
Será que devo separa em duas tabelas diferentes no banco de dados?
Até mais.
Acho que o erro está no for que uso para inserir dados no banco de dados, dá uma olhada:
[code vbnet]
Private Sub inserirComanda()
Try
sqlCon.Open()
With sqlCmd
.CommandType = CommandType.Text
.CommandText = [Ô][Ô]
.CommandText = [Ô]INSERT INTO TB_VendaComanda (DataVenda, NumVenda, ComandaNum, CodFunc, Atendente, HoraEnt, HoraSaida, Ocupantes, [Ô] & _
[Ô]Valor, Credito, Qtde, CodProd, Produto, PrecoUnitario, NomeCliente, CPF, CodCliente)[Ô] & _
[Ô]VALUES (@DataVenda, @NumVenda, @ComandaNum, @CodFunc, @Atendente, @HoraEnt, @HoraSaida, @Ocupantes, @Valor, [Ô] & _
[Ô]@Credito, @Qtde, @CodProd, @Produto, @PrecoUnitario, @NomeCliente, @CPF, @CodCliente)[Ô]
For i As Integer = 0 To listProdComanda.Items.Count - 1
.Connection = sqlCon
If listProdComanda.Items(i).SubItems(0).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@CodProd[Ô], SqlDbType.Int)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@CodProd[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(0).Text
End If
If listProdComanda.Items(i).SubItems(1).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = listProdComanda.Items(i).SubItems(1).Text
End If
If listProdComanda.Items(i).SubItems(2).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(2).Text
End If
If listProdComanda.Items(i).SubItems(3).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(3).Text
End If
If listProdComanda.Items(i).SubItems(4).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(4).Text
End If
.Parameters.Add(New SqlParameter([Ô]@DataVenda[Ô], SqlDbType.Date)).Value = txtDataVendaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NumVenda[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@ComandaNum[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodFunc[Ô], SqlDbType.Int)).Value = txtCodFuncComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Atendente[Ô], SqlDbType.NVarChar)).Value = txtAtendenteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraEnt[Ô], SqlDbType.Time)).Value = txtHoraEntComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraSaida[Ô], SqlDbType.Time)).Value = txtHoraSaidaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Ocupantes[Ô], SqlDbType.NVarChar)).Value = txtOcupantesComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Credito[Ô], SqlDbType.Decimal)).Value = txtCreditoComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NomeCliente[Ô], SqlDbType.NVarChar)).Value = txtNomeClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CPF[Ô], SqlDbType.NVarChar)).Value = txtCPFClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodCliente[Ô], SqlDbType.Int)).Value = txtCodClienteComanda.Text
sqlCmd.ExecuteNonQuery()
.Parameters.Clear()
Next
End With
Catch ex As Exception
MsgBox(ex.ToString)
Finally
sqlCmd.Parameters.Clear()
sqlCon.Close()
End Try
End Sub [/code]
Será que devo separa em duas tabelas diferentes no banco de dados?
Até mais.
[txt-color=#e80000] For i As Integer = 0 To listProdComanda.Items.Count - 1[/txt-color]
.Connection = sqlCon
If listProdComanda.Items(i).SubItems(0).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@CodProd[Ô], SqlDbType.Int)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@CodProd[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(0).Text
End If
If listProdComanda.Items(i).SubItems(1).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = listProdComanda.Items(i).SubItems(1).Text
End If
If listProdComanda.Items(i).SubItems(2).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(2).Text
End If
If listProdComanda.Items(i).SubItems(3).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(3).Text
End If
If listProdComanda.Items(i).SubItems(4).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(4).Text
End If
[txt-color=#e80000]Parameters.Add(New SqlParameter([Ô]@DataVenda[Ô], SqlDbType.Date)).Value = txtDataVendaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NumVenda[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@ComandaNum[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodFunc[Ô], SqlDbType.Int)).Value = txtCodFuncComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Atendente[Ô], SqlDbType.NVarChar)).Value = txtAtendenteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraEnt[Ô], SqlDbType.Time)).Value = txtHoraEntComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraSaida[Ô], SqlDbType.Time)).Value = txtHoraSaidaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Ocupantes[Ô], SqlDbType.NVarChar)).Value = txtOcupantesComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Credito[Ô], SqlDbType.Decimal)).Value = txtCreditoComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NomeCliente[Ô], SqlDbType.NVarChar)).Value = txtNomeClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CPF[Ô], SqlDbType.NVarChar)).Value = txtCPFClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodCliente[Ô], SqlDbType.Int)).Value = txtCodClienteComanda.Text[/txt-color]
sqlCmd.ExecuteNonQuery()
.Parameters.Clear()
Next
Não condiz com um Listview com caixa de texto.Quando se tem uma linha fica normal,mas quando tem mais de uma vai repetir várias vezes o mesmo valor do textbox.
.Connection = sqlCon
If listProdComanda.Items(i).SubItems(0).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@CodProd[Ô], SqlDbType.Int)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@CodProd[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(0).Text
End If
If listProdComanda.Items(i).SubItems(1).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = listProdComanda.Items(i).SubItems(1).Text
End If
If listProdComanda.Items(i).SubItems(2).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(2).Text
End If
If listProdComanda.Items(i).SubItems(3).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(3).Text
End If
If listProdComanda.Items(i).SubItems(4).Text = [Ô][Ô] Then
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = DBNull.Value
Else
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(4).Text
End If
[txt-color=#e80000]Parameters.Add(New SqlParameter([Ô]@DataVenda[Ô], SqlDbType.Date)).Value = txtDataVendaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NumVenda[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@ComandaNum[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodFunc[Ô], SqlDbType.Int)).Value = txtCodFuncComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Atendente[Ô], SqlDbType.NVarChar)).Value = txtAtendenteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraEnt[Ô], SqlDbType.Time)).Value = txtHoraEntComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraSaida[Ô], SqlDbType.Time)).Value = txtHoraSaidaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Ocupantes[Ô], SqlDbType.NVarChar)).Value = txtOcupantesComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Credito[Ô], SqlDbType.Decimal)).Value = txtCreditoComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NomeCliente[Ô], SqlDbType.NVarChar)).Value = txtNomeClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CPF[Ô], SqlDbType.NVarChar)).Value = txtCPFClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodCliente[Ô], SqlDbType.Int)).Value = txtCodClienteComanda.Text[/txt-color]
sqlCmd.ExecuteNonQuery()
.Parameters.Clear()
Next
Não condiz com um Listview com caixa de texto.Quando se tem uma linha fica normal,mas quando tem mais de uma vai repetir várias vezes o mesmo valor do textbox.
Bom dia OMAR
As caixa de texto não estão no listview fazem parte do formulário.
As caixa de texto não estão no listview fazem parte do formulário.
Bom dia JABA
Consegui salvar no balco de dados como nulo com o seguinte código:
[code vbnet] Private Sub inserirComanda()
Try
sqlCon.Open()
With sqlCmd
.CommandType = CommandType.Text
.CommandText = [Ô][Ô]
.CommandText = [Ô]INSERT INTO TB_VendaComanda (DataVenda, NumVenda, ComandaNum, CodFunc, Atendente, HoraEnt, HoraSaida, Ocupantes, [Ô] & _
[Ô]Valor, Credito, Qtde, CodProd, Produto, PrecoUnitario, NomeCliente, CPF, CodCliente)[Ô] & _
[Ô]VALUES (@DataVenda, @NumVenda, @ComandaNum, @CodFunc, @Atendente, @HoraEnt, @HoraSaida, @Ocupantes, @Valor, [Ô] & _
[Ô]@Credito, @Qtde, @CodProd, @Produto, @PrecoUnitario, @NomeCliente, @CPF, @CodCliente)[Ô]
.Connection = sqlCon
If listProdComanda.Items.Count = 0 Then
.Parameters.Add(New SqlParameter([Ô]@CodProd[Ô], SqlDbType.Int)).Value = DBNull.Value
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = DBNull.Value
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = DBNull.Value
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = DBNull.Value
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = DBNull.Value
.Parameters.Add(New SqlParameter([Ô]@DataVenda[Ô], SqlDbType.Date)).Value = txtDataVendaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NumVenda[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@ComandaNum[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodFunc[Ô], SqlDbType.Int)).Value = txtCodFuncComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Atendente[Ô], SqlDbType.NVarChar)).Value = txtAtendenteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraEnt[Ô], SqlDbType.Time)).Value = txtHoraEntComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraSaida[Ô], SqlDbType.Time)).Value = txtHoraSaidaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Ocupantes[Ô], SqlDbType.NVarChar)).Value = txtOcupantesComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Credito[Ô], SqlDbType.Decimal)).Value = txtCreditoComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NomeCliente[Ô], SqlDbType.NVarChar)).Value = txtNomeClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CPF[Ô], SqlDbType.NVarChar)).Value = txtCPFClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodCliente[Ô], SqlDbType.Int)).Value = txtCodClienteComanda.Text
sqlCmd.ExecuteNonQuery()
.Parameters.Clear()
Else
For i As Integer = 0 To listProdComanda.Items.Count - 1
.Parameters.Add(New SqlParameter([Ô]@CodProd[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(0).Text
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = listProdComanda.Items(i).SubItems(1).Text
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(2).Text
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(3).Text
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(4).Text
.Parameters.Add(New SqlParameter([Ô]@DataVenda[Ô], SqlDbType.Date)).Value = txtDataVendaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NumVenda[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@ComandaNum[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodFunc[Ô], SqlDbType.Int)).Value = txtCodFuncComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Atendente[Ô], SqlDbType.NVarChar)).Value = txtAtendenteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraEnt[Ô], SqlDbType.Time)).Value = txtHoraEntComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraSaida[Ô], SqlDbType.Time)).Value = txtHoraSaidaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Ocupantes[Ô], SqlDbType.NVarChar)).Value = txtOcupantesComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Credito[Ô], SqlDbType.Decimal)).Value = txtCreditoComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NomeCliente[Ô], SqlDbType.NVarChar)).Value = txtNomeClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CPF[Ô], SqlDbType.NVarChar)).Value = txtCPFClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodCliente[Ô], SqlDbType.Int)).Value = txtCodClienteComanda.Text
sqlCmd.ExecuteNonQuery()
.Parameters.Clear()
Next
End If
End With
Catch ex As Exception
MsgBox(ex.ToString)
Finally
sqlCmd.Parameters.Clear()
sqlCon.Close()
End Try
End Sub [/code]
Não sei se esta correto programar dessa maneira, mas funcionou.
Consegui salvar no balco de dados como nulo com o seguinte código:
[code vbnet] Private Sub inserirComanda()
Try
sqlCon.Open()
With sqlCmd
.CommandType = CommandType.Text
.CommandText = [Ô][Ô]
.CommandText = [Ô]INSERT INTO TB_VendaComanda (DataVenda, NumVenda, ComandaNum, CodFunc, Atendente, HoraEnt, HoraSaida, Ocupantes, [Ô] & _
[Ô]Valor, Credito, Qtde, CodProd, Produto, PrecoUnitario, NomeCliente, CPF, CodCliente)[Ô] & _
[Ô]VALUES (@DataVenda, @NumVenda, @ComandaNum, @CodFunc, @Atendente, @HoraEnt, @HoraSaida, @Ocupantes, @Valor, [Ô] & _
[Ô]@Credito, @Qtde, @CodProd, @Produto, @PrecoUnitario, @NomeCliente, @CPF, @CodCliente)[Ô]
.Connection = sqlCon
If listProdComanda.Items.Count = 0 Then
.Parameters.Add(New SqlParameter([Ô]@CodProd[Ô], SqlDbType.Int)).Value = DBNull.Value
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = DBNull.Value
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = DBNull.Value
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = DBNull.Value
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = DBNull.Value
.Parameters.Add(New SqlParameter([Ô]@DataVenda[Ô], SqlDbType.Date)).Value = txtDataVendaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NumVenda[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@ComandaNum[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodFunc[Ô], SqlDbType.Int)).Value = txtCodFuncComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Atendente[Ô], SqlDbType.NVarChar)).Value = txtAtendenteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraEnt[Ô], SqlDbType.Time)).Value = txtHoraEntComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraSaida[Ô], SqlDbType.Time)).Value = txtHoraSaidaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Ocupantes[Ô], SqlDbType.NVarChar)).Value = txtOcupantesComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Credito[Ô], SqlDbType.Decimal)).Value = txtCreditoComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NomeCliente[Ô], SqlDbType.NVarChar)).Value = txtNomeClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CPF[Ô], SqlDbType.NVarChar)).Value = txtCPFClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodCliente[Ô], SqlDbType.Int)).Value = txtCodClienteComanda.Text
sqlCmd.ExecuteNonQuery()
.Parameters.Clear()
Else
For i As Integer = 0 To listProdComanda.Items.Count - 1
.Parameters.Add(New SqlParameter([Ô]@CodProd[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(0).Text
.Parameters.Add(New SqlParameter([Ô]@Produto[Ô], SqlDbType.NVarChar)).Value = listProdComanda.Items(i).SubItems(1).Text
.Parameters.Add(New SqlParameter([Ô]@PrecoUnitario[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(2).Text
.Parameters.Add(New SqlParameter([Ô]@Qtde[Ô], SqlDbType.Int)).Value = listProdComanda.Items(i).SubItems(3).Text
.Parameters.Add(New SqlParameter([Ô]@Valor[Ô], SqlDbType.Decimal)).Value = listProdComanda.Items(i).SubItems(4).Text
.Parameters.Add(New SqlParameter([Ô]@DataVenda[Ô], SqlDbType.Date)).Value = txtDataVendaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NumVenda[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@ComandaNum[Ô], SqlDbType.NVarChar)).Value = txtNumComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodFunc[Ô], SqlDbType.Int)).Value = txtCodFuncComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Atendente[Ô], SqlDbType.NVarChar)).Value = txtAtendenteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraEnt[Ô], SqlDbType.Time)).Value = txtHoraEntComanda.Text
.Parameters.Add(New SqlParameter([Ô]@HoraSaida[Ô], SqlDbType.Time)).Value = txtHoraSaidaComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Ocupantes[Ô], SqlDbType.NVarChar)).Value = txtOcupantesComanda.Text
.Parameters.Add(New SqlParameter([Ô]@Credito[Ô], SqlDbType.Decimal)).Value = txtCreditoComanda.Text
.Parameters.Add(New SqlParameter([Ô]@NomeCliente[Ô], SqlDbType.NVarChar)).Value = txtNomeClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CPF[Ô], SqlDbType.NVarChar)).Value = txtCPFClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CodCliente[Ô], SqlDbType.Int)).Value = txtCodClienteComanda.Text
sqlCmd.ExecuteNonQuery()
.Parameters.Clear()
Next
End If
End With
Catch ex As Exception
MsgBox(ex.ToString)
Finally
sqlCmd.Parameters.Clear()
sqlCon.Close()
End Try
End Sub [/code]
Não sei se esta correto programar dessa maneira, mas funcionou.
Diante disto entendi sua intenção.
Mas vai repetir várias vezes sem necessidade nenhuma.
Se não me engano tem que fazer parte de outra tabela.
[txt-color=#e80000].Parameters.Add(New SqlParameter([Ô]@NomeCliente[Ô], SqlDbType.NVarChar)).Value = txtNomeClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CPF[Ô], SqlDbType.NVarChar)).Value = txtCPFClienteComanda.Text
[/txt-color]
Mas vai repetir várias vezes sem necessidade nenhuma.
Se não me engano tem que fazer parte de outra tabela.
[txt-color=#e80000].Parameters.Add(New SqlParameter([Ô]@NomeCliente[Ô], SqlDbType.NVarChar)).Value = txtNomeClienteComanda.Text
.Parameters.Add(New SqlParameter([Ô]@CPF[Ô], SqlDbType.NVarChar)).Value = txtCPFClienteComanda.Text
[/txt-color]
Boa tarde OMAR2011
Realmente do jeito que esta montado o insert repete desnecessariamente os campos textos. Vou pesquisar para ver se acho uma solução para isso.
Acho que vc reparou que consegui salvar no banco de dados os valores do listview como nulos. Só que isso me acarretou outro problema.
Para recuperar os dados uso o seguinte código.
[code vbnet] Private Sub VendaComanda()
Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [Ô]SELECT CodProd, Produto, PrecoUnitario, Qtde, Valor, DataVenda, ComandaNum, CodFunc, Atendente, HoraEnt, HoraSaida, Ocupantes, Credito, NomeCliente, CPF, CodCliente [Ô] & _
[Ô]FROM TB_VendaComanda [Ô] & _
[Ô]WHERE ComandaNum = [ô][Ô] & txtNumComanda.Text & [Ô][ô][Ô]
Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim dr As SqlDataReader
listProdComanda.Items.Clear()
sqlCmd.Connection.Open()
dr = sqlCmd.ExecuteReader
While dr.Read
Dim lvItem As New ListViewItem(New String() {dr.GetValue(0).ToString, dr.GetString(1).ToString, dr.GetDecimal(2).ToString, dr.GetInt32(3), dr.GetDecimal(4)})
Me.listProdComanda.Items.Add(lvItem)
txtDataVendaComanda.Text = dr([Ô]DataVenda[Ô]).ToString
txtNumComanda.Text = dr([Ô]ComandaNum[Ô]).ToString
txtCodFuncComanda.Text = dr([Ô]CodFunc[Ô]).ToString
txtAtendenteComanda.Text = dr([Ô]Atendente[Ô]).ToString
txtHoraEntComanda.Text = dr([Ô]HoraEnt[Ô]).ToString
txtHoraSaidaComanda.Text = dr([Ô]HoraSaida[Ô]).ToString
txtOcupantesComanda.Text = dr([Ô]Ocupantes[Ô]).ToString
txtCreditoComanda.Text = dr([Ô]Credito[Ô]).ToString
txtNomeClienteComanda.Text = dr([Ô]NomeCliente[Ô]).ToString
txtCPFClienteComanda.Text = dr([Ô]CPF[Ô]).ToString
txtCodClienteComanda.Text = dr([Ô]CodCliente[Ô]).ToString
End While
sqlCon.Close()
dr.Close()
somarValorItensComanda()
creditoFinal()
somarQtdeItensComanda()
totalizadorComanda()
End Sub [/code]
O problema está aqui:
Dim lvItem As New ListViewItem(New String() {dr.GetValue(0).ToString, dr.GetString(1).ToString, dr.GetDecimal(2).ToString, dr.GetInt32(3), dr.GetDecimal(4)})
Me.listProdComanda.Items.Add(lvItem)
Se existem dados funciona perfeitamente, mas se os campos do listview no banco de dados estiverem como nulos da o seguinte erro:
Dados são Null. Não é possÃvel chamar este método ou esta propriedade em valores Null.
Se tiver alguma solução agradeço.
Realmente do jeito que esta montado o insert repete desnecessariamente os campos textos. Vou pesquisar para ver se acho uma solução para isso.
Acho que vc reparou que consegui salvar no banco de dados os valores do listview como nulos. Só que isso me acarretou outro problema.
Para recuperar os dados uso o seguinte código.
[code vbnet] Private Sub VendaComanda()
Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [Ô]SELECT CodProd, Produto, PrecoUnitario, Qtde, Valor, DataVenda, ComandaNum, CodFunc, Atendente, HoraEnt, HoraSaida, Ocupantes, Credito, NomeCliente, CPF, CodCliente [Ô] & _
[Ô]FROM TB_VendaComanda [Ô] & _
[Ô]WHERE ComandaNum = [ô][Ô] & txtNumComanda.Text & [Ô][ô][Ô]
Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim dr As SqlDataReader
listProdComanda.Items.Clear()
sqlCmd.Connection.Open()
dr = sqlCmd.ExecuteReader
While dr.Read
Dim lvItem As New ListViewItem(New String() {dr.GetValue(0).ToString, dr.GetString(1).ToString, dr.GetDecimal(2).ToString, dr.GetInt32(3), dr.GetDecimal(4)})
Me.listProdComanda.Items.Add(lvItem)
txtDataVendaComanda.Text = dr([Ô]DataVenda[Ô]).ToString
txtNumComanda.Text = dr([Ô]ComandaNum[Ô]).ToString
txtCodFuncComanda.Text = dr([Ô]CodFunc[Ô]).ToString
txtAtendenteComanda.Text = dr([Ô]Atendente[Ô]).ToString
txtHoraEntComanda.Text = dr([Ô]HoraEnt[Ô]).ToString
txtHoraSaidaComanda.Text = dr([Ô]HoraSaida[Ô]).ToString
txtOcupantesComanda.Text = dr([Ô]Ocupantes[Ô]).ToString
txtCreditoComanda.Text = dr([Ô]Credito[Ô]).ToString
txtNomeClienteComanda.Text = dr([Ô]NomeCliente[Ô]).ToString
txtCPFClienteComanda.Text = dr([Ô]CPF[Ô]).ToString
txtCodClienteComanda.Text = dr([Ô]CodCliente[Ô]).ToString
End While
sqlCon.Close()
dr.Close()
somarValorItensComanda()
creditoFinal()
somarQtdeItensComanda()
totalizadorComanda()
End Sub [/code]
O problema está aqui:
Dim lvItem As New ListViewItem(New String() {dr.GetValue(0).ToString, dr.GetString(1).ToString, dr.GetDecimal(2).ToString, dr.GetInt32(3), dr.GetDecimal(4)})
Me.listProdComanda.Items.Add(lvItem)
Se existem dados funciona perfeitamente, mas se os campos do listview no banco de dados estiverem como nulos da o seguinte erro:
Dados são Null. Não é possÃvel chamar este método ou esta propriedade em valores Null.
Se tiver alguma solução agradeço.
faça isso:
txtDataVendaComanda.Text =IIf(IsDBNull(dr([Ô]DataVenda[Ô])), [Ô][Ô], dr([Ô]DataVenda[Ô]))
ou no lugar de [Ô][Ô] use nothing, fica a seu criterio
txtDataVendaComanda.Text =IIf(IsDBNull(dr([Ô]DataVenda[Ô])), [Ô][Ô], dr([Ô]DataVenda[Ô]))
ou no lugar de [Ô][Ô] use nothing, fica a seu criterio
Tópico encerrado , respostas não são mais permitidas