none
Erro na execução da rotina update ( vb6) RRS feed

  • 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

    quinta-feira, 5 de dezembro de 2013 11:39

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.


    quinta-feira, 5 de dezembro de 2013 12:47
  • 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
    ----------------------------------------------------------

    quinta-feira, 5 de dezembro de 2013 13:42
    Moderador
  • Só  uma curiosidade: Por que VB6? É uma exigencia da sua empresa? 

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 5 de dezembro de 2013 13:43
    Moderador
  • 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".
    quinta-feira, 5 de dezembro de 2013 18:42
  • Willian , a proposito, são valores numéricos que estão indo nesses campos.
    quinta-feira, 5 de dezembro de 2013 18:44
  • 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
    ----------------------------------------------------------

    quinta-feira, 5 de dezembro de 2013 18:48
    Moderador
  • 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.... 
    sexta-feira, 6 de dezembro de 2013 16:38
  • 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
    ----------------------------------------------------------

    sexta-feira, 6 de dezembro de 2013 16:55
    Moderador
  • Willian, obrigado pela dica, e pela ajuda. fico a sua disposição.

    • Marcado como Resposta Luiz_fco sexta-feira, 6 de dezembro de 2013 17:20
    sexta-feira, 6 de dezembro de 2013 17:20