... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$182,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Atualização de estoque de produtos listados no subformulário

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!

 


 

 


3 comentário(s)

Guto   16/03/2018 09:48:22

Ola Avelino
Posso usar esse procedimento em um form baseado em uma consulta?
obrigado

Avelino Sampaio   19/03/2018 00:48:01

Guto,

pode sim mas observe no código, que o campo Estoque será atualizado direto no tabela.

Sucesso!


Guto   20/03/2018 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


Envie seu comentário: