MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

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


2 participantes

    [Resolvido]Erro em comando update para atualizar um campo em uma tabela.

    avatar
    enio.eltz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 63
    Registrado : 19/07/2016

    [Resolvido]Erro em comando update para atualizar um campo em uma tabela. Empty [Resolvido]Erro em comando update para atualizar um campo em uma tabela.

    Mensagem  enio.eltz 27/3/2017, 20:54

    Boa tarde

    Tenho um banco em Access 2007 que já está quase rodando conforme desejo. Mas quero que, depois de preencher o preço de compra de um produto, ao marcar uma caixa de seleção em um formulário de compras, o preço de compra do produto seja atualizado.

    Na estrutura do banco eu tenho:

    - tbl_CadProdutos/fml_CadProdutos com os campos:

    COD_tbl_CadProdutos - Numerção Automática
    COD_PRODUTO - Texto Curto
    DESCRICAO_PRODUTO - Texto curto
    NOME_FORNECEDOR - Caixa de combinação para selecionar o fornecedor (tbl_CadFornecedores)
    VALOR_COMPRA - Moeda
    VALOR_VENDA - Moeda

    É nessa tabela que eu quero alterar o VALOR_COMPRA com o comando update.

    No formulário fml_CadCompras eu tenho um subformulário fml_CadComprasDetalhes com os campos:

    COD_tbl_CadComprasDetalhes - Numeração Automática (campo da tbl_CadComprasDetalhes)
    COD_ME_tbl_CadCompras - Número (campo da tbl_CadComprasDetalhes)
    COD_PRODUTO - Caixa de combinação para selecionar o código do produto (tbl_CadProdutos)
    DESC_PRODUTO - Texto curto (campo da tbl_CadComprasDetalhes)
    QUANTIDADE - Número (campo da tbl_CadComprasDetalhes)
    PRECO_COMPRA - MOEDA (campo da tbl_CadComprasDetalhes)
    ATUALIZA_PRECO_COMPRA - Sim/Não (campo da tbl_CadComprasDetalhes)

    No subformulário fml_CadComprasDetalhes eu criei duas caixas de texto:

    campo_at_vlr_compra_cod
    campo_at_vlr_compra

    E então criei um evento após atualizar para preencher as duas caixas de texto com o seguinte código:

    Private Sub PRECO_COMPRA_AfterUpdate()
       Me.campo_at_vlr_compra_cod.Value = Me.COD_PRODUTO.Column(1)
       Me.campo_at_vlr_compra.Value = Me.PRECO_COMPRA
       
    End Sub

    Bom, até aqui está funcionando. Quando eu lanço um produto no subformulário com o preço de compra, as caixas de texto são preenchidas com os valores.

    Para a caixa de seleção ATUALIZA_PRECO_COMPRA eu criei um evento após atualizar para fazer o update do campo VALOR_COMPRA da tbl_CadProdutos com o seguinte código:

    Private Sub ATUALIZA_PRECO_COMPRA_AfterUpdate()
           Update tbl_CadProdutos
               Set VALOR_COMPRA = campo_at_vlr_compra
               WHERE COD_PRODUTO = campo_at_vlr_compra_cod
                   
    End Sub

    Com esse código eu tenho o erro: Erro de compilação: 'Sub' ou 'Function' não definida.

    Pesquisando nesse fórum alguns exemplo, tentei com os campos da tabela entre [], assim:

    Private Sub ATUALIZA_PRECO_COMPRA_AfterUpdate()
           Update tbl_CadProdutos
               Set [VALOR_COMPRA] = campo_at_vlr_compra
               WHERE [COD_PRODUTO] = campo_at_vlr_compra_cod
                   
    End Sub

    Mas também tenho o mesmo erro: Erro de compilação: 'Sub' ou 'Function' não definida.

    Continuei pesquisando e encontrei outros códigos para fazer isso. Mas nenhum deles atuou. Vejam:

    strUpdate_VALOR_COMPRA = "Update tbl_CadProdutos SET [VALOR_COMPRA] = campo_at_vlr_compra WHERE [COD_PRODUTO] = campo_at_vlr_compra_cod;"

    Com esse código não tenho erro, mas não faz o update do valor. Tentei colocar ' nas caixas de texto:

    strUpdate_VALOR_COMPRA = "Update tbl_CadProdutos SET [VALOR_COMPRA] = 'campo_at_vlr_compra' WHERE [COD_PRODUTO] = 'campo_at_vlr_compra_cod';"

    Com esse código também não tenho erro, mas não faz o update do valor.

    CurrentDb.Execute "UPDATE tbl_CadProdutos SET VALOR_COMPRA = campo_at_vlr_compra WHERE COD_PRODUTO = campo_at_vlr_compra_cod;"

    Com esse código tenho o erro: Erro em tempo de execução '3061': Parâmetros insuficientes. Eram esperados 2. Tentei colocar ' nas caixas de texto:

    CurrentDb.Execute "UPDATE tbl_CadProdutos SET VALOR_COMPRA = 'campo_at_vlr_compra' WHERE COD_PRODUTO = 'campo_at_vlr_compra_cod';"

    Com esse código também não tenho erro, mas não faz o update do valor.

    Desde já agradeço a ajuda.

    Enio Eltz Filho
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Erro em comando update para atualizar um campo em uma tabela. Empty Re: [Resolvido]Erro em comando update para atualizar um campo em uma tabela.

    Mensagem  CassioFabre 27/3/2017, 21:29

    Boa tarde,

    Voce utilizar apenas "update" não faz sentido algum, o Access não reconhece naturalmente isso, então voce deveria criar uma função de nome UPDATE para o access reconhecer. Mas tente o seguinte:

    dim db as database
    dim rs as recordset

    set db = currentdb
    set rs = db.Openrecordset("select campopreco, campoid from TABELA where campoid = " & txtCodigo & "")

    rs.edit
    rs("campopreco") = precoatualizado
    rs.update
    rs.close
    db.close

    Abraço.
    avatar
    enio.eltz
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 63
    Registrado : 19/07/2016

    [Resolvido]Erro em comando update para atualizar um campo em uma tabela. Empty Re: [Resolvido]Erro em comando update para atualizar um campo em uma tabela.

    Mensagem  enio.eltz 27/3/2017, 21:52

    Cassio

    Muito obrigado pelo retorno. Com o código que você me passou está alterando o valor como eu desejo.
    Segue o código alterado para quem quiser usar:

    Private Sub ATUALIZA_PRECO_COMPRA_AfterUpdate()
       Dim db As Database
       Dim rs As Recordset

           Set db = CurrentDb
           Set rs = db.OpenRecordset("select VALOR_COMPRA, COD_tbl_CadProdutos from tbl_CadProdutos where COD_tbl_CadProdutos = " & campo_at_vlr_compra_cod & "")

           rs.Edit
           rs("VALOR_COMPRA") = campo_at_vlr_compra
           rs.Update
           rs.Close
       db.Close
       
    End Sub

    Como você instruiu no código o campo campoid alterei o código que preenche a caixa de texto campo_at_vlr_compra_cod para:

    Private Sub PRECO_COMPRA_AfterUpdate()
       Me.campo_at_vlr_compra_cod.Value = Me.COD_PRODUTO.Column(0)
       Me.campo_at_vlr_compra.Value = Me.PRECO_COMPRA
       
    End Sub

    Assim o sistema preenche a caixa de texto campo_at_vlr_compra_cod com o valor do código da numeração automática do Access.

    Enio Eltz Filho.
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Erro em comando update para atualizar um campo em uma tabela. Empty Re: [Resolvido]Erro em comando update para atualizar um campo em uma tabela.

    Mensagem  CassioFabre 28/3/2017, 19:44

    Boa tarde,

    Agradecemos o retorno.

    Abraço.

    Conteúdo patrocinado


    [Resolvido]Erro em comando update para atualizar um campo em uma tabela. Empty Re: [Resolvido]Erro em comando update para atualizar um campo em uma tabela.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/4/2024, 15:44