Olá amigos, tenho um BD para controle de estoque e pedidos, está funcional, porém não estou conseguindo dar baixa no estoque a partir dos registros no subformulário detalhe do pedido, pois no evento ao sair do campo quantidade não consegui implementar um código para atualizar o estoque pois para saber o saldo do estoque eu fiz uma consulta com um campo SALDO dentro da consulta SALDO. Estou mandando o BD para ver se alguém pode me ajudar ou tem outra forma mais prática de fazer isso. para visualizar utilize a tecla Shift.
2 participantes
[Resolvido]Consulta para dar baixa no estoque em outra consulta
mmx- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 31
Registrado : 09/01/2013
- Mensagem nº1
Consulta para dar baixa no estoque em outra consulta
Olá amigos, tenho um BD para controle de estoque e pedidos, está funcional, porém não estou conseguindo dar baixa no estoque a partir dos registros no subformulário detalhe do pedido, pois no evento ao sair do campo quantidade não consegui implementar um código para atualizar o estoque pois para saber o saldo do estoque eu fiz uma consulta com um campo SALDO dentro da consulta SALDO. Estou mandando o BD para ver se alguém pode me ajudar ou tem outra forma mais prática de fazer isso. para visualizar utilize a tecla Shift.
.................................................................................
Marcones Lira
good guy- Developer
- Respeito às regras :
Sexo :
Localização :
Mensagens : 1304
Registrado : 05/02/2010
- Mensagem nº2
Consulta para dar baixa no estoque em outra consulta
Olá mmx,
Em sistemas desse porte já praticamente concluído fica meio difícil descobrir qual é o problema e entender todo o emaranhado de código senão o próprio programador. A dica que deixo pra você é sistematizar o programa desde o início. Separe em blocos de código com descrição do que o código faz. Isto vale para sub-rotinas e funções. No meu site(www.goodguyaccessvba.com.br) tenho um sistema PDV que desenvolvi para um cliente e a partir dele pretendo desenvolver outros. Nele tudo funciona a contento porque fiz em parceria com o cliente.
Na atualização de estoque, criei as seguintes sub-rotinas:
'Caso seja efetivada a compra do produto
Public Sub CalculaEstoque()
'Código de Eduardo Machado (Good Guy) Por favor respeite os direitos autorais
On Error Resume Next
Dim strSQL As String
Dim TotalQuant As Integer
Dim sQuant As Integer
Dim nCodigo As Integer
Dim sCodigo As String
Dim nQuant As Integer
sCodigo = Me.cboCodigoCliente.Column(0)
nCodigo = CInt(DLast("CodigoProduto", "qrytblSelecao", "CodigoCliente = '" & sCodigo & "'"))
nQuant = CInt(DLookup("Quantidade", "Produtos", "CodigoProd = '" & nCodigo & "'"))
DoCmd.SetWarnings False
If nQuant > 5 Then 'Aqui no lugar do 5 você pode criar uma variável que receba o valor determinado pelo seu cliente com um InputBox ou caixa de texto.
sQuant = CInt(Forms!PDV!txtQuant)
MsgBox "BAIXA NO ESTOQUE PARA ESTE PRODUTO: " & sQuant, vbInformation, "PDV"
TotalQuant = Abs(nQuant - sQuant) 'Quantidade em estoque do produto após a venda
strSQL = "UPDATE Produtos SET Quantidade = '" & TotalQuant & "'WHERE CodigoProd = '" & nCodigo & "'" 'Código SQL de atualização de estoque
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
DoCmd.RunCommand acCmdRefresh
Else
MsgBox "ESTE PRODUTO ESTÁ NO ESTOQUE MÍNIMO !!!", vbCritical, "ALERTA"
Beep
sQuant = CInt(Forms!PDV!txtQuant)
MsgBox "BAIXA NO ESTOQUE PARA ESTE PRODUTO: " & sQuant, vbInformation, "PDV"
TotalQuant = Abs(nQuant - sQuant) 'Quantidade em estoque do produto após a venda
strSQL = "UPDATE Produtos SET Quantidade = '" & TotalQuant & "'WHERE CodigoProd = '" & nCodigo & "'" 'Código SQL de atualização de estoque
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
DoCmd.RunCommand acCmdRefresh
End If
End Sub
'Caso se queira repor o estoque se a venda do produto não for concluída
Public Sub CalculaReposicao()
'Código de Eduardo Machado (Good Guy) Por favor respeite os direitos autorais
On Error Resume Next
Dim strSQL As String
Dim TotalQuant As Integer
Dim sQuant As Integer
Dim nCodigo As Integer
Dim sCodigo As String
Dim nQuant As Integer
sCodigo = Me.cboCodigoCliente.Column(0)
nCodigo = CInt(DLast("CodigoProduto", "qrytblSelecao", "CodigoCliente = '" & sCodigo & "'"))
nQuant = CInt(DLookup("Quantidade", "Produtos", "CodigoProd = '" & nCodigo & "'"))
DoCmd.SetWarnings False
sQuant = CInt(Forms!PDV!txtQuant)
MsgBox "REPOSIÇÃO DE ESTOQUE PARA ESTE PRODUTO: " & sQuant, vbInformation, "PDV"
TotalQuant = nQuant + sQuant
strSQL = "UPDATE Produtos SET Quantidade = '" & TotalQuant & "'WHERE CodigoProd = '" & nCodigo & "'"
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
DoCmd.RunCommand acCmdRefresh
End Sub
Estude o código e veja se pode ajudá-lo a fazer as alterações necessárias. Você poderia fazer a chamada das sub-rotinas na saída(Evento Exit) do campo Quantidade, determinada pelo consumidor na contabilidade de um determinado produto.
Em sistemas desse porte já praticamente concluído fica meio difícil descobrir qual é o problema e entender todo o emaranhado de código senão o próprio programador. A dica que deixo pra você é sistematizar o programa desde o início. Separe em blocos de código com descrição do que o código faz. Isto vale para sub-rotinas e funções. No meu site(www.goodguyaccessvba.com.br) tenho um sistema PDV que desenvolvi para um cliente e a partir dele pretendo desenvolver outros. Nele tudo funciona a contento porque fiz em parceria com o cliente.
Na atualização de estoque, criei as seguintes sub-rotinas:
'Caso seja efetivada a compra do produto
Public Sub CalculaEstoque()
'Código de Eduardo Machado (Good Guy) Por favor respeite os direitos autorais
On Error Resume Next
Dim strSQL As String
Dim TotalQuant As Integer
Dim sQuant As Integer
Dim nCodigo As Integer
Dim sCodigo As String
Dim nQuant As Integer
sCodigo = Me.cboCodigoCliente.Column(0)
nCodigo = CInt(DLast("CodigoProduto", "qrytblSelecao", "CodigoCliente = '" & sCodigo & "'"))
nQuant = CInt(DLookup("Quantidade", "Produtos", "CodigoProd = '" & nCodigo & "'"))
DoCmd.SetWarnings False
If nQuant > 5 Then 'Aqui no lugar do 5 você pode criar uma variável que receba o valor determinado pelo seu cliente com um InputBox ou caixa de texto.
sQuant = CInt(Forms!PDV!txtQuant)
MsgBox "BAIXA NO ESTOQUE PARA ESTE PRODUTO: " & sQuant, vbInformation, "PDV"
TotalQuant = Abs(nQuant - sQuant) 'Quantidade em estoque do produto após a venda
strSQL = "UPDATE Produtos SET Quantidade = '" & TotalQuant & "'WHERE CodigoProd = '" & nCodigo & "'" 'Código SQL de atualização de estoque
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
DoCmd.RunCommand acCmdRefresh
Else
MsgBox "ESTE PRODUTO ESTÁ NO ESTOQUE MÍNIMO !!!", vbCritical, "ALERTA"
Beep
sQuant = CInt(Forms!PDV!txtQuant)
MsgBox "BAIXA NO ESTOQUE PARA ESTE PRODUTO: " & sQuant, vbInformation, "PDV"
TotalQuant = Abs(nQuant - sQuant) 'Quantidade em estoque do produto após a venda
strSQL = "UPDATE Produtos SET Quantidade = '" & TotalQuant & "'WHERE CodigoProd = '" & nCodigo & "'" 'Código SQL de atualização de estoque
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
DoCmd.RunCommand acCmdRefresh
End If
End Sub
'Caso se queira repor o estoque se a venda do produto não for concluída
Public Sub CalculaReposicao()
'Código de Eduardo Machado (Good Guy) Por favor respeite os direitos autorais
On Error Resume Next
Dim strSQL As String
Dim TotalQuant As Integer
Dim sQuant As Integer
Dim nCodigo As Integer
Dim sCodigo As String
Dim nQuant As Integer
sCodigo = Me.cboCodigoCliente.Column(0)
nCodigo = CInt(DLast("CodigoProduto", "qrytblSelecao", "CodigoCliente = '" & sCodigo & "'"))
nQuant = CInt(DLookup("Quantidade", "Produtos", "CodigoProd = '" & nCodigo & "'"))
DoCmd.SetWarnings False
sQuant = CInt(Forms!PDV!txtQuant)
MsgBox "REPOSIÇÃO DE ESTOQUE PARA ESTE PRODUTO: " & sQuant, vbInformation, "PDV"
TotalQuant = nQuant + sQuant
strSQL = "UPDATE Produtos SET Quantidade = '" & TotalQuant & "'WHERE CodigoProd = '" & nCodigo & "'"
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
DoCmd.RunCommand acCmdRefresh
End Sub
Estude o código e veja se pode ajudá-lo a fazer as alterações necessárias. Você poderia fazer a chamada das sub-rotinas na saída(Evento Exit) do campo Quantidade, determinada pelo consumidor na contabilidade de um determinado produto.
mmx- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 31
Registrado : 09/01/2013
muito obrigado amigo
.................................................................................
Marcones Lira
Conteúdo patrocinado
» Buscar dados de um formulário com consulta cruzada para outra consulta, dificuldade na coluna
» [Resolvido]Transportar o valor de uma consulta para outra
» [Resolvido]Ao dar baixa ir para outra tabela
» [Resolvido]Consulta exclusão com base nas informações retornadas por outra consulta
» [Resolvido]Consulta para mostrar campo que não existe na outra tabela...
» [Resolvido]Transportar o valor de uma consulta para outra
» [Resolvido]Ao dar baixa ir para outra tabela
» [Resolvido]Consulta exclusão com base nas informações retornadas por outra consulta
» [Resolvido]Consulta para mostrar campo que não existe na outra tabela...