Atualização de estoque de produtos listados no subformulário
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Usuário Alves:
Boa noite!
Estou com a seguinte situação: - tenho um formulário de vendas, com um subformulário de produtos. Quando atualizo a quantidade, ele automaticamente atualiza a tabela de produtos, dando baixa da quantidade e exibindo a seguinte mensagem:
"Você está prestes a atualizar uma linha(s). Depois de clicar em sim, você não poderá utilizar o comando Desfazer para reverter as alterações. Tem certeza de que deseja atualizar esses registros?"
O código que estou utilizando é este:
Private Sub QUANTIDADE_AfterUpdate()
Dim strSql as string
strSql = "UPDATE TbPRODUTOS set ESTOQUE= "
strSql = strSql & "(ESTOQUE+(FORMULÁRIOS![fmlCOMPRAS]![TbITENSCOMPRA subformulário]![QUANTIDADE])) "
strSql = strSql & "WHERE TbPRODUTOS.CODIGO="
strSql = strSql & "(FORMULÁRIOS![fmlCOMPRAS]![TbITENSCOMPRA subformulário]![CODIGOPRODUTO]);"
DoCmd.RunSQL (strSql)
End Sub
Gostaria de atualizar todos os itens de venda ao clicar em salvar e também, eliminar a mensagem exibida. Já tentei colocar esse comando atribuído em um botão, porém ele só atualiza a linha que está selecionada no subformulário. Existe algum comando que faça selecionar todo o subformulário e atualizar todos os dados de uma só vez?
Abraços.
Suporte:
Alves, utilize o recordsetclone para percorrer os registros do subformulário. No evento Ao clicar do botão, coloque:
Private Sub btAtualizaEstoque_Click()
Dim rs As DAO.Recordset
Set rs = Forms!frmCompras![TbITENSCOMPRA subformulários].Form.RecordsetClone
rs.MoveFirst
Do While Not rs.EOF
currentdb.execute "UPDATE tblprodutos SET Estoque = Estoque - " & rs!quantidade & _
" WHERE Codigo = " & rs!CodigoProduto & ";"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
msgbox "Estoque atualizado....", vbinformation,"Aviso"
End Sub
Nota 1: o currentdb.execute não exibe a mensagem.
Nota 2: faça um backup da sua tabela antes dos testes.
Usuário Alves:
Avelino, funcionou perfeitamente!!
Obrigado!
6 comentário(s) osmar Junior 18/10/2023 09:08:35 Boa tarde! Minha dúvida é a seguinte, tenho um subformulario, e ao digitar o produto, gostaria que os dados desse produto viesse automaticamente, sem precisar digitar. agradeço!! Guto 20/03/2023 08:33:32 Nao tem problema É para uma banca. Os itens sao temporarios, a revista vem fica um tempo e o que nao vendeu é devolvido, nao ficando mais em estoque. É apenas para quando é pedido um reforço, ou devoluçao parcial, por isso a consulta. Grato Mestre Avelino Sampaio 19/03/2023 00:48:01 Guto, pode sim mas observe no código, que o campo Estoque será atualizado direto no tabela. Sucesso! Guto 16/03/2023 09:48:22 Ola Avelino Posso usar esse procedimento em um form baseado em uma consulta? obrigado Tiago Santos 26/10/2020 04:43:45 Bom dia...Me Ajudou muito, estou passando para agradecer. Não tenho muito conhecimento em VBA, mas o código foi ótimo! Silvio 09/04/2020 17:37:29 Boa noite, Tenho dois subformularios de uma unica tabela, no subformulario 1 eu tenho o campo chave de acesso da tabela nota fiscal, e no subformulario 2 eu tenho o campo nota fiscal da tabela nota fiscal, o qual é preenchido com os seis digitos da chave de acesso quando o campo chave de acesso e atualizado. Tenho um campo no formulario principal que conta a quantidade de notas fiscais é digitado no sistema. Eu gostaria que quando fosse atualizado o campo chave de acesso os camposnota fiscal e quantidade de nota fiscal fossem atualizados automaticamente, sem a necessidade de eu digitar as teclas crtl+alt+f9, poderiam me ajudar |