scandinavo 13/12/2017, 12:35
Como voce não passou a forma que voce trabalha hoje
imaginei a seguinte situação
dependendo da sua forma de trabalhar o codigo fica diferente mas o raciocínio o mesmo.
Voce ja tem a produção do dia armazenada(estoque)
assim que os pedidos vão aparecendo vai sendo retirado deste estoque
e se pedido ficar fracionado o que faltou vai para o outro dia
vai sendo linha a linha
seguindo o seu exemplo mas a estrutura teve que ser alterada.
usei o select case e não consegui fazer o formulário atualizar somente com o uso do botão
se alguém souber aonde estou errando da uma ajuda ai.
'seque o codigo
Dim DB As Database
Dim rs As DAO.Recordset
Set DB = CurrentDb()
Set rs = DB.OpenRecordset("TBL_PEDIDO")
Dim strProdutoQtd As Integer
On Error Resume Next
'busca na tabela a quantidade de estoque existente
strProdutoQtd = Val(DLookup("[Estoque]", "TBL_CARGA", "[Código] = " & Me.PROCESSO & ""))
Select Case strProdutoQtd
Case Is <= 0 'caso seja zero ou menor que zero
MsgBox "Estoque zerado, insuficiente para o produto " & Me.PROCESSO.Column(1) & " " & vbCrLf _
& "Qnt atual é de " & strProdutoQtd & "", vbCritical, "Falta de Mercadoria............"
Me.QTDE = "" 'qntSaida
Me.Undo
Case Is >= Me.QTDE 'caso seja maior que a qnt de saida
Me.dt_prev = Me.DT
'se tudo estiver bem, retira a quantidade da tabela
DoCmd.SetWarnings False
'Como o estoque é maior retira da qtde
DoCmd.RunSQL "UPDATE TBL_CARGA Set [TBL_CARGA].[Estoque] = [TBL_CARGA].[Estoque] - '" & Me.QTDE & "' WHERE [TBL_CARGA].[Código] = " & Me.PROCESSO & ""
DoCmd.SetWarnings True
Case Is < Me.QTDE 'se a saida for maior que o estoque
MsgBox "O resto do pedido vai ficar para outro dia " & Me.PROCESSO.Column(1) & " " & vbCrLf _
& "Qnt atual é de " & strProdutoQtd & "", vbCritical, "Falta de Mercadoria............"
'armazena o que faltou do pedido
Me.SALDO_PEDIDO = Me.QTDE - strProdutoQtd
'preenche a data +1
Me.dt_prev = Me.DT + 1
'executa a atualização do estoque
DoCmd.SetWarnings False
'Como a qnde é maior que o estoque retira do proprio estoque zerando
DoCmd.RunSQL "UPDATE TBL_CARGA Set [TBL_CARGA].[Estoque] = [TBL_CARGA].[Estoque] - '" & strProdutoQtd & "' WHERE [TBL_CARGA].[Código] = " & Me.PROCESSO & ""
DoCmd.SetWarnings True
'agora adiciona uma nova linha com resto do pedido para o dia sequinte
rs.AddNew
rs("codPedido") = Me.CodPedido
rs("DT") = Me.DT
rs("Processo") = Me.PROCESSO
rs("Qtde") = Me.SALDO_PEDIDO
rs("dt_prev") = Me.dt_prev
rs.Update
rs.Close
DB.Close
'Atualiza o form
'Nao sei por que mas não esta atualizando clique no botão ou f5
'testei as duas opções e nada
Me.Requery
Me.Form.Requery
End Select
- Anexos
- EXEMPLO 2.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (34 Kb) Baixado 14 vez(es)