Olá meus amigos, estou criando um sistema e preciso saber qual modelo correto de saber o estoque do produto. Já tentei criar uma consulta, agrupando por total e deu certo, já utilizei o DSoma e também deu certo. Mas imagino que esta não seja a forma correta, pois utilizaria muito processamento e o sistema deve rodar em rede. Como será que os grandes ERPs profissionais somam? Será que é na base do DSoma (SELECT) também?
2 participantes
[Resolvido]Como resgatar saldo de estoque?
IuriEmanuel- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 69
Registrado : 23/08/2018
- Mensagem nº1
[Resolvido]Como resgatar saldo de estoque?
DamascenoJr.- Moderador
- Respeito às regras :
Sexo :
Localização :
Mensagens : 3845
Registrado : 22/11/2016
- Mensagem nº2
Re: [Resolvido]Como resgatar saldo de estoque?
A maioria tem uma tabela de estoque pronta ao invés de somar toda entrada e subtrair a soma de todas as saídas de todos os produtos.
Ex1: se cadastrar um produto na tabela produtos, também será cadastrado este produto na tabela estoque com a quantidade 0.
Ex2: se lançar a entrada do produto na tabela entradas, também a quantidade deste produto será alterada na tabela estoque.
Ex3: se lançar a saído do produto na tabela saídas, também a quantidade deste produto será alterada na tabela estoque.
Ex4: se excluir um produto na tabela produtos, também será excluído este produto na tabela estoque.
Tudo feito com triggers (equivalente as macro de dados no ms access) diretamente na base de dados.
Um pouco sobre do uso de triggers para estoque tem neste link >> https://www.devmedia.com.br/implementando-controle-de-estoque-no-mysql-com-triggers-e-procedures/26352)
Ex1: se cadastrar um produto na tabela produtos, também será cadastrado este produto na tabela estoque com a quantidade 0.
Ex2: se lançar a entrada do produto na tabela entradas, também a quantidade deste produto será alterada na tabela estoque.
Ex3: se lançar a saído do produto na tabela saídas, também a quantidade deste produto será alterada na tabela estoque.
Ex4: se excluir um produto na tabela produtos, também será excluído este produto na tabela estoque.
Tudo feito com triggers (equivalente as macro de dados no ms access) diretamente na base de dados.
Um pouco sobre do uso de triggers para estoque tem neste link >> https://www.devmedia.com.br/implementando-controle-de-estoque-no-mysql-com-triggers-e-procedures/26352)
IuriEmanuel- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 69
Registrado : 23/08/2018
- Mensagem nº3
Re: [Resolvido]Como resgatar saldo de estoque?
Interessante! Daria o mesmo resultado se eu fizesse do modo abaixo também, não é?
Por exemplo, eu tenho uma rotina que movimenta a tabela "ProdutoMovimento". Eu posso criar, um campo na minha tabela produto chamado "Estoque" e, daí, dentro da própria rotina, fazer algo tipo.
Public Sub MovProduto (ProdID, Quantidade, Descricao)
Alem da query para inserir registro na movimentação
Dim nEstoque As String
Estoque = DLookup ("Estoque",tblMovProduto,"ProdID =" & ProdID) ' Usar o DLookup uma vez que a função retornaria apenas um registro mesmo, não há necessidade de linhas de código para criar um Recordset.
DoCmd.RunSQL "UPDATE " & tblMovProduto & " SET Estoque = nEstoque WHERE ProdID = " & ProdID & ""
End Sub
Estou correto? Teria também a função de ao excluir uma venda por exemplo, utilizar a mesma linha de raciocínio para debitar o estoque, uma vez que não haveria registros ou "gatilho" para excluir-los também.
Por exemplo, eu tenho uma rotina que movimenta a tabela "ProdutoMovimento". Eu posso criar, um campo na minha tabela produto chamado "Estoque" e, daí, dentro da própria rotina, fazer algo tipo.
Public Sub MovProduto (ProdID, Quantidade, Descricao)
Alem da query para inserir registro na movimentação
Dim nEstoque As String
Estoque = DLookup ("Estoque",tblMovProduto,"ProdID =" & ProdID) ' Usar o DLookup uma vez que a função retornaria apenas um registro mesmo, não há necessidade de linhas de código para criar um Recordset.
DoCmd.RunSQL "UPDATE " & tblMovProduto & " SET Estoque = nEstoque WHERE ProdID = " & ProdID & ""
End Sub
Estou correto? Teria também a função de ao excluir uma venda por exemplo, utilizar a mesma linha de raciocínio para debitar o estoque, uma vez que não haveria registros ou "gatilho" para excluir-los também.
DamascenoJr.- Moderador
- Respeito às regras :
Sexo :
Localização :
Mensagens : 3845
Registrado : 22/11/2016
- Mensagem nº4
Re: [Resolvido]Como resgatar saldo de estoque?
Nem é preciso usar o DLookup para descobrir a quantidade atual na tabela para só depois fazer a operação, já pode colocar direto na SQL mesmo.
- Código:
Public Sub MovProduto (ProdID, Quantidade, Tipo)
'alem da query para inserir registro na movimentação
'tipo 1 é entrada
'tipo 2 é saída
DoCmd.RunSQL "UPDATE tblMovProduto SET Estoque = Estoque " & iif(Tipo=1," + "," - ") & Quantidade & " WHERE ProdID = " & ProdID
End Sub
IuriEmanuel- Intermediário
- Respeito às regras :
Sexo :
Localização :
Mensagens : 69
Registrado : 23/08/2018
- Mensagem nº5
Re: [Resolvido]Como resgatar saldo de estoque?
Muito Obrigado, Ivan!!
Esta sua sugestão e também a dica de usar o proprio campo para atualizar o Update me ajudou não apenas nesta parte do projeto mas reduziu muito o meu código que usa o mesmo método para outras atividades.
Obrigado!!
Esta sua sugestão e também a dica de usar o proprio campo para atualizar o Update me ajudou não apenas nesta parte do projeto mas reduziu muito o meu código que usa o mesmo método para outras atividades.
Obrigado!!
DamascenoJr.- Moderador
- Respeito às regras :
Sexo :
Localização :
Mensagens : 3845
Registrado : 22/11/2016
- Mensagem nº6