MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Erro de sintaxe UPDATE

    avatar
    alecmuller
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 03/12/2019

    [Resolvido]Erro de sintaxe UPDATE Empty [Resolvido]Erro de sintaxe UPDATE

    Mensagem  alecmuller em 10/9/2020, 12:51

    Bom dia senhores!

    Estou com a seguinte situação:

    Tenho um form de vendas, no qual, após inserir, alterar ou deletar um registro de produto, tais mudanças são repassadas para uma tabela de movimentação, a partir da qual estou tentando fazer um controle de estoque.

    Já consegui fazer funcionar os três tipos de comandos, porém não sei por que cargas d'água a função de update parou de funcionar. Dá erro de sintaxe.
    Já refiz o comando, olhei todos os campos da tabela de movimentação e do form de venda, todos os nomes estão certos.


    Talvez tenha alguma relação com um erro que aparece ao abrir a tabela movimentação, mas não sei.


    Segue o comando update, no evento após atualizar do subform de vendas:

    Código:
    DoCmd.RunSQL "UPDATE Movimentacao SET Qtd = " & Me.Qtd_Item & " WHERE Cod_Venda = " & Me.IDVenda & " AND Cod_Produto = " & Me.Cod_Produto



    Segue prints...


    Imagem 1 - Erro ao abrir tabela movimentacao:

    [Resolvido]Erro de sintaxe UPDATE Erro10






    Imagem 2 - Estrutura tabela movimentacao:

    [Resolvido]Erro de sintaxe UPDATE Movime10





    Imagem 3 - Form e subform de vendas:

    [Resolvido]Erro de sintaxe UPDATE Venda10

    São os campos que destaquei em vermelho que estou utilizando para os 3 comandos de dados (insert, update e delete)





    Outro problema que está me matando é o seguinte...
    No evento "após inserir", também do subform de vendas, coloquei um código para atualizar a quantidade de estoque na tabela produtos.

    Segue o código:

    Código:
     Dim EstoqueEntrada As Double
     EstoqueEntrada = DSum([Qtd], Mov_Aux, [Cod_Prod] = " & Me.Cod_Produto & " And [Tipo_Mov] = 2)
     
     Dim EstoqueSaida As Double
     EstoqueSaida = DSum([Qtd], Mov_Aux, [Cod_Prod] = " &Me.Cod_Produto & " And [Tipo_Mov] = 1)

     Dim SaldoEstoque As Double
     SaldoEstoque = EstoqueEntrada - EstoqueSaida
     
     Dim AtualizaEstoque As String
     AtualizaEstoque = "UPDATE Produto SET Estoque_Atual = " & SaldoEstoque & " WHERE Cod_Produto = " & Me.Cod_Produto
     
     DoCmd.RunSQL AtualizaEstoque

    Pórem, quando insiro uma linha na venda, dá o seguinte erro:

    "Erro em tempo de execução '2465':
    O Microsoft Access não pode localizar o campo '|1' referido na sua expressão.

    O código acima faz referência ao domínio Mov_Aux, que é uma união com a seguinte sintaxe:

    Código:
    SELECT Prod_Entrada AS Cod_Prod, Tipo_Movimento AS Tipo_Mov, Qtd_Entrada AS Qtd, Cod_Movimentacao FROM Mov_Entrada
    UNION SELECT * FROM Mov_Saida;

    Carvalho gosta desta mensagem

    Carvalho
    Carvalho
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 204
    Registrado : 19/01/2013

    [Resolvido]Erro de sintaxe UPDATE Empty Re: [Resolvido]Erro de sintaxe UPDATE

    Mensagem  Carvalho em 11/9/2020, 12:15

    bom dia cara,

    pelo que estou vendo no seu código ele está se referenciando a um subform para atualizar e você não está indicando ele no seu código tente assim.

    Código:
    DoCmd.RunSQL "UPDATE Movimentacao SET Qtd = " & formularioPrincipal!SeuSubFormulario!Qtd_Item & " WHERE Cod_Venda = " & formularioPrincipal!SeuSubFormulario!IDVenda & " AND Cod_Produto = " & formularioPrincipal!SeuSubFormulario!Cod_Produto & ";"

    avatar
    alecmuller
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 03/12/2019

    [Resolvido]Erro de sintaxe UPDATE Empty Re: [Resolvido]Erro de sintaxe UPDATE

    Mensagem  alecmuller em 11/9/2020, 16:17

    Carvalho, obrigado por sua resposta, mas acredito que não seja isso.

    Coloquei o código nas propriedades do próprio subform. Tanto é, que tenho um comando de inserção em outra tabela, que está junto, logo acima, do segundo código que passei em minha mensagem anterior.

    Na verdade, identifiquei algumas faltas de " no código, então adicionei. Ficou assim:


    Código:
    Private Sub Form_AfterInsert()
     
     DoCmd.RunSQL "INSERT INTO Movimentacao ([Cod_Produto], [Cod_Venda], [Data], [Qtd]) VALUES ('" & Me.Cod_Produto & "', '" & Me.IDVenda & "', '" & Me.dtData & "', '" & Me.Qtd_Item & "')"
     DoCmd.SetWarnings False

     DoCmd.OpenQuery "Mov_Aux2", acViewNormal, acEdit
     
     Dim EstoqueEntrada As Double
     EstoqueEntrada = Nz(DSum("[Qtd]", "tbl_Mov_Aux", "[Cod_Prod] = " & Me.Cod_Produto & " And [Tipo_Mov] = 2"))
     
     Dim EstoqueSaida As Double
     EstoqueSaida = Nz(DSum("[Qtd]", "tbl_Mov_Aux", "[Cod_Prod] = " & Me.Cod_Produto & " And [Tipo_Mov] = 1"))

     Dim SaldoEstoque As Double
     SaldoEstoque = EstoqueEntrada - EstoqueSaida
     
     Dim AtualizaEstoque As String
     AtualizaEstoque = "UPDATE Produto SET Estoque_Atual = " & SaldoEstoque & " WHERE Cod_Produto = " & Me.Cod_Produto & ";"
     
     DoCmd.RunSQL AtualizaEstoque
     
     
    End Sub


    Este código funciona até a parte de SaldoEstoque. Está dando erro de sintaxe do UPDATE.

    Em suma, resolvi a segunda parte do meu problema, bem como o erro da imagem 1 (excluindo e adicionando novamente a tabela vinculado ao BD de front end). Só preciso de ajuda com os dois erros de sintaxe do UPDATE.
    avatar
    alecmuller
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 9
    Registrado : 03/12/2019

    [Resolvido]Erro de sintaxe UPDATE Empty Re: [Resolvido]Erro de sintaxe UPDATE

    Mensagem  alecmuller em 14/9/2020, 01:45

    Boa noite a todos.

    Para que fique registrado aqui aos futuros curiosos que passarem pelos mesmos problemas que descrevi neste tópico, quero compartilhar a minha solução, bem como dar por resolvido este tópico.


    O erro na minha rotina UPDATE estava em alguns fechamentos de aspas duplas e simples. Não entendi a razão, visto que eu estava trabalhando com campos numéricos apenas, sem texto algum, porém, ao colocar ambos os tipos de aspas (prática necessária para campos de string), deu certo. Imaginem o quanto quebrei a cabeça pra descobrir isso.. kkk

    Segue exemplo do novo comando UPDATE:

    Código:
    "UPDATE Produto SET Estoque_Atual ='" & SaldoEstoque & "' WHERE Cod_Produto =" & Me.Cod_Produto & ";"

    Onde SaldoEstoque e Estoque_Atual são valores numéricos.



    Sobre meu outro problema, não consegui resolver apenas com as 3 consultas iniciais (Mov_Entrada, Mov_Saida e Mov_Aux - esta última é o resultado de uma UNION das duas primeiras). Tive que criar uma nova consulta, porém com a rotina de criar tabela com o resultado (para quem não ouviu falar disso, basta entrar em modo de design de consulta e olhar na faixa de opções o comando "criar tabela"), a qual puxa o resultado de Mov_Aux e joga nesta nova tabela, a partir da qual eu consigo fazer os procedimentos necessários de UPDATE via VB.



    Enfim, se alguém tiver qualquer outra dúvida, estou à disposição para ajudar até onde minha capacidade e conhecimento permitirem.

      Data/hora atual: 24/11/2020, 08:57