CONFLITO NO TIPO DE OPERANDO INT É INCOMP COM DATA
Olá amigos
Tenho o seguinte código:
Private Sub alterarFormaPgto()
Dim con As New SqlConnection(strCmd)
con.Open()
Try
For Each ListView As ListViewItem In listHistoricoVendas.Items
If (ListView.Checked) Then
Dim strsql As String = [Ô][Ô]
Dim formaPago As String = [Ô]À Prazo - Pago[Ô]
Dim dataVcto As Date = (listHistoricoVendas.Items(0).SubItems(3).Text)
Dim strReceber As String = [Ô]SELECT DataVenda FROM TB_FinalizaVenda WHERE DataVenda =[Ô] & dataVcto
cmd = New SqlCommand(strReceber, con)
strReceber = CDate(cmd.ExecuteScalar())
strsql = [Ô]UPDATE TB_FinalizaVenda SET FormaPagamento = [ô][Ô] & formaPago & [Ô][ô] WHERE DataVenda =[Ô] & dataVcto
cmd = New SqlCommand(strsql, con)
cmd.ExecuteNonQuery()
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
cmd = Nothing
End Try
End Sub
E dá o seguinte erro: conflito no tipo de operando int é incompatÃvel com data com data
Como resolvo isso.
Tenho o seguinte código:
Private Sub alterarFormaPgto()
Dim con As New SqlConnection(strCmd)
con.Open()
Try
For Each ListView As ListViewItem In listHistoricoVendas.Items
If (ListView.Checked) Then
Dim strsql As String = [Ô][Ô]
Dim formaPago As String = [Ô]À Prazo - Pago[Ô]
Dim dataVcto As Date = (listHistoricoVendas.Items(0).SubItems(3).Text)
Dim strReceber As String = [Ô]SELECT DataVenda FROM TB_FinalizaVenda WHERE DataVenda =[Ô] & dataVcto
cmd = New SqlCommand(strReceber, con)
strReceber = CDate(cmd.ExecuteScalar())
strsql = [Ô]UPDATE TB_FinalizaVenda SET FormaPagamento = [ô][Ô] & formaPago & [Ô][ô] WHERE DataVenda =[Ô] & dataVcto
cmd = New SqlCommand(strsql, con)
cmd.ExecuteNonQuery()
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
cmd = Nothing
End Try
End Sub
E dá o seguinte erro: conflito no tipo de operando int é incompatÃvel com data com data
Como resolvo isso.
Aparentemente, isso aqui >> (listHistoricoVendas.Items(0).SubItems(3).Text),
não esta sendo interpretado como data.
não esta sendo interpretado como data.
Você não está delimitando a data na SQL, então ela vira números em que é feito uma conta de divisão, já que o separador de data é o mesmo que o operador de divisão.
O ideal seria usar parâmetros na SQL, mas colocando delimitadores na data, que no caso do SQL Server pode ser aspas simples também funciona
O ideal seria usar parâmetros na SQL, mas colocando delimitadores na data, que no caso do SQL Server pode ser aspas simples também funciona
Bom se essa linha:
Dim dataVcto As Date = (listHistoricoVendas.Items(0).SubItems(3).Text)
Estiver com um retorno de data correto
você terá que fazer assim:
Dim strReceber As String = [Ô]SELECT DataVenda FROM TB_FinalizaVenda WHERE DataVenda =[Ô] & dataVcto.ToString([Ô]yyyy-MM-dd[Ô])
ou
Dim strReceber As String = [Ô]SELECT DataVenda FROM TB_FinalizaVenda WHERE DataVenda =[Ô] & Format(dataVcto, [Ô]yyyy-MM-dd[Ô])
E o mesmo para o UpDate.
Minha opinião trabalhe com parâmetros!
Dim dataVcto As Date = (listHistoricoVendas.Items(0).SubItems(3).Text)
Estiver com um retorno de data correto
você terá que fazer assim:
Dim strReceber As String = [Ô]SELECT DataVenda FROM TB_FinalizaVenda WHERE DataVenda =[Ô] & dataVcto.ToString([Ô]yyyy-MM-dd[Ô])
ou
Dim strReceber As String = [Ô]SELECT DataVenda FROM TB_FinalizaVenda WHERE DataVenda =[Ô] & Format(dataVcto, [Ô]yyyy-MM-dd[Ô])
E o mesmo para o UpDate.
Minha opinião trabalhe com parâmetros!
experimente dataVcto.ToString
[Ô]A vida não dá e nem empresta, não se comove e nem se apieda. Tudo quanto ela faz é retribuir e transferir aquilo que nós lhe oferecemos.
Albert Einstein
Olá amigos
Com as alterações indicadas continua dando o mesmo erro. Ai resolvi trabalhar com o código da venda , ficou mais fácil e lógico.
Segue o código:
Private Sub alterarFormaPgto()
Dim con As New SqlConnection(strCmd)
con.Open()
Try
For Each ListView As ListViewItem In listHistoricoVendas.Items
If (ListView.Checked) Then
For i As Integer = 0 To listHistoricoVendas.Items.Count - 1
Dim strsql As String = [Ô][Ô]
Dim formaPago As String = [Ô]Pago[Ô]
Dim codVenda As Integer = listHistoricoVendas.Items(0).Text
Dim strReceber As String = [Ô]SELECT id_FinalizaVenda FROM TB_FinalizaVenda WHERE id_FinalizaVenda =[Ô] & codVenda
cmd = New SqlCommand(strReceber, con)
strReceber = CInt(cmd.ExecuteScalar())
strsql = [Ô]UPDATE TB_FinalizaVenda SET FormaPagamento = [ô][Ô] & formaPago & [Ô][ô] WHERE id_FinalizaVenda =[Ô] & codVenda
cmd = New SqlCommand(strsql, con)
cmd.ExecuteNonQuery()
Next
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
cmd = Nothing
End Try
End Sub
Vou ter que me aprofundar mais para trabalhar corretamente com datas.
O código acima funciona bem, mas só faz update no no primeiro item do listview. Gostaria que fizesse o update em todos os items marcados.
Não sei se devo abrir outro tópico ou continuar nesse: Me deem um toque.
Com as alterações indicadas continua dando o mesmo erro. Ai resolvi trabalhar com o código da venda , ficou mais fácil e lógico.
Segue o código:
Private Sub alterarFormaPgto()
Dim con As New SqlConnection(strCmd)
con.Open()
Try
For Each ListView As ListViewItem In listHistoricoVendas.Items
If (ListView.Checked) Then
For i As Integer = 0 To listHistoricoVendas.Items.Count - 1
Dim strsql As String = [Ô][Ô]
Dim formaPago As String = [Ô]Pago[Ô]
Dim codVenda As Integer = listHistoricoVendas.Items(0).Text
Dim strReceber As String = [Ô]SELECT id_FinalizaVenda FROM TB_FinalizaVenda WHERE id_FinalizaVenda =[Ô] & codVenda
cmd = New SqlCommand(strReceber, con)
strReceber = CInt(cmd.ExecuteScalar())
strsql = [Ô]UPDATE TB_FinalizaVenda SET FormaPagamento = [ô][Ô] & formaPago & [Ô][ô] WHERE id_FinalizaVenda =[Ô] & codVenda
cmd = New SqlCommand(strsql, con)
cmd.ExecuteNonQuery()
Next
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
cmd = Nothing
End Try
End Sub
Vou ter que me aprofundar mais para trabalhar corretamente com datas.
O código acima funciona bem, mas só faz update no no primeiro item do listview. Gostaria que fizesse o update em todos os items marcados.
Não sei se devo abrir outro tópico ou continuar nesse: Me deem um toque.
Como esta carregado o seu ListView? Mostre-nos uma imagem do mesmo carregado!
Olá FILMAN
Segue imagem:
Segue imagem:
Private Sub alterarFormaPgto()
Dim con As New SqlConnection(strCmd)
con.Open()
Try
For Each ListView As ListViewItem In listHistoricoVendas.Items
If (ListView.Checked) Then
Dim codVenda As Integer = ListView.Text
Dim strsql As String = [Ô]SELECT id_FinalizaVenda FROM TB_FinalizaVenda WHERE id_FinalizaVenda =[Ô] & codVenda
cmd = New SqlCommand(strsql, con)
codVenda = CInt(cmd.ExecuteScalar())
strsql = [Ô]UPDATE TB_FinalizaVenda SET FormaPagamento = [ô]Pago[ô] WHERE id_FinalizaVenda =[Ô] & codVenda
cmd = New SqlCommand(strsql, con)
cmd.ExecuteNonQuery()
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
cmd = Nothing
End Try
End Sub
Caso queira pegar alguma outra coluna faça assim:
Dim Nome As String = ListView.SubItems(1).Text
espero ter ajudado
Perfeito. Muito obrigado pela ajuda.
Um abraço
Um abraço
Tópico encerrado , respostas não são mais permitidas