Usuário com melhor resposta
Erro na execução da rotina update ( vb6)

Pergunta
-
Caros amigos, bom dia, sou novato em programação e estou com problema em todas funções de "update" dando o erro
"Runtime Error -2147217913 (80040e07)
Tipo de dados incompatível na expressão de critério"
esse erro esta acontecendo em todas as rotinas que eu tenho a função upadate, anexo abaixo uma das rotinas que aparece o erro.
Function atu_gercliente() ' -*-*- atualiza tabela gerencial do cliente -*-*-
Dim VlrUtlMov As Double
Dim VlrMaior As Double
Dim VlrAcumulado As Double
Dim valor As Double
datalancamento = Date
VlrUtlMov = 0
VlrMaior = 0
VlrAcumulado = 0
valor = CDbl(txtvalor.Text)
SQL = "SELECT a.Cod_cliente1, a.num_vlrultmov, a.num_maiorvlr, a.num_vlracumulado," & _
" b.Cod_cliente, b.txt_nome " & _
" FROM tb_gercliente a, tb_clientes b " & _
" WHERE b.txt_nome = '" & UCase(Trim(txtNome)) & "' AND a.Cod_cliente1 = b.Cod_cliente "
Set conecta.rs = conecta.cn1.Execute(SQL)
Cliente = conecta.rs!Cod_cliente
If Not conecta.rs.EOF Then
VlrUtlMov = conecta.rs!num_vlrultmov
VlrMaior = conecta.rs!Num_MaiorVlr
VlrAcumulado = conecta.rs!Num_VlrAcumulado
If VlrMaior < CDbl(txtvalor.Text) Then
VlrMaior = CDbl(txtvalor.Text)
End If
VlrAcumulado = VlrAcumulado + valor
VlrUtlMov = CDbl(txtvalor.Text)
SQL = ""
SQL = " UPDATE TB_GERCLIENTE " & _
" SET dat_ultmov = '" & datalancamento & "'," & _
" num_vlrultmov = '" & VlrUtlMov & "'," & _
" num_maiorvlr = '" & VlrMaior & "'," & _
" num_vlracumulado = '" & VlrAcumulado & "'" & _
" WHERE Cod_cliente1 = '" & Cliente & "' "
Set conecta.rs = conecta.cn1.Execute(SQL) >>>>>>> erro <<<<<<
End If
End Function
Respostas
Todas as Respostas
-
Bom dia Luiz_fco,
> Primeira coisa, quando for inserir algum código, por favor use a opção de "inserir bloco de código", facilita muito a visualização e interpretação do mesmo.
> Segundo, se algum dos teus valores é numérico aqui:
SQL = " UPDATE TB_GERCLIENTE " & _ " SET dat_ultmov = '" & datalancamento & "'," & _ " num_vlrultmov = '" & VlrUtlMov & "'," & _ " num_maiorvlr = '" & VlrMaior & "'," & _ " num_vlracumulado = '" & VlrAcumulado & "'" & _ " WHERE Cod_cliente1 = '" & Cliente & "' "
remova as aspas simples (' ').
Giovani Cruzara – Microsoft Contingent Staff
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.
Msdn Community Support
Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Editado Giovani Cr quinta-feira, 5 de dezembro de 2013 12:48
- Sugerido como Resposta Fulvio Cezar Canducci Dias quinta-feira, 5 de dezembro de 2013 12:52
-
Creio que o mais provavel seja o campo Data presente na sua Query,. Este tem que estar no formato YYYY-MM-DD (universal)
Valores tem que ser com ponto, ao invez de virgula.
SQL = " UPDATE TB_GERCLIENTE " & _ " SET dat_ultmov = '" & fomart(datalancamento,"yyyy-MM-dd") & "'," & _ " num_vlrultmov = '" & Replace(VlrUtlMov,",",".") & "'," & _ " num_maiorvlr = '" & Replace(VlrMaior,",",".") & "'," & _ " num_vlracumulado = '" & Replace(VlrAcumulado,",",".") & "'" & _ " WHERE Cod_cliente1 = '" & Cliente & "' "
As aspas simples para valores nao sao recomendadas, mas nao causariam o erro mencionado.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
Só uma curiosidade: Por que VB6? É uma exigencia da sua empresa?
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
Caro Willian, Não, apenas eu tenho pouco conhecimento de programação em vb6, não tenho curso de programação, estou fazendo este programa pelo método autodidático. com relação a dica passada não adiantou dando "erro de sintaxe na intrução update".
-
-
Ok... Mas tem algum problema em usar VB.NET?
PAra ver o que esta ocorrendo faça o seguinte:
adicone a seguinte linha:
MsgBox(SQL)
Antes da linha:
Set conecta.rs = conecta.cn1.Execute(SQL)
Depois cole aqui o resultado.
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
Willian, não teria problema nenhum, só que por enquanto estou apanhando no vb, pretendo conhecer a programação em vb.net mais tarde. por um acaso vc teria alguma apostilha que possa me indicar de vb.net?..Com relação ao erro passado, me desculpe, tinha escrito o comando errado, deu certo....
-
VB6 é considerado com uma linguagem quase morta. A ultima atualizaçao foi a mais de 10 anos e nao vai haver outra. Windows 8 tem suporte limitado a essa linguagem e é possivel que ela nao seja mias suportada em uma proxima versao do Windows.
Eu sei que existe uma enorme base legada em VB6 (como existe em Cobol, Fortran, Clipper) mas se vc esta aprendendo, entao eu sugiro começao pelo VB.NET... Outro detalhe.. Apesar das duas terem em comum o nome VB (Visual Basic) e compartilharem a maior parte da sintaxe, estruturalmente elas sao bem diferentes.
Hoje vc encontra muito mais documentaçao sobre VB.NET que VB6...
PAra começar eu sugiro o site do Macoratti:
http://www.macoratti.net/13/12/net_vbn1.htm
http://www.macoratti.net/Cursos/vbn_ado.htm <--- este ensina como utilizaro o ADO.NET
Voce vai ver que o VB.NET oferece muito mais recursos que o VB6... Lembre-se que boa parte daqui que voce vai ver em VB6 nao é valido para VB.NET... Entao tome cuidado com essa afirmaçao
" só que por enquanto estou apanhando no vb, pretendo conhecer a programação em vb.net mais tarde."
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-