Só para vcs verificarem comigo...
24/07/2003
0
O PROCEDIMENTO ABAIXO ATUALIZA O MEU ESTOQUE ATRAVÉS DE PEDIDOS CONFIRMADOS
COM O DBEdit3(Data de Recebimento); ACRESCENTEI O 1º IF(If (DBEdit4.Text) <> ´´ Then
Application.MessageBox(´Para Este Pedido o Estoque já foi Atualizado´,´Atenção´,MB_OK)
PARA QUE ALÉM DE CHECAR SE A DATA DE RECEBIMENTO ESTÁ PREENCHIDA, ELE TAMBÉM VERIFIQUE
SE O VALOR DE DBEdit4(Valor do Pedido) também está preenchido!
FIZ ISSO PORQUE SEM ESSES IF´s, TODA VEZ QUE EU CLICAVA NO BOTÃO ATUALIZAR, ELE ACRESCENTAVA
(PARA UM MESMO Nº DE PEDIDO) A MESMA QUANTIDADE NO ESTOQUE!
A QUESTÃO É QUE, APESAR DE ESTAR, ATÉ O MOMENTO FUNCIONANDO BEM, EU ACHEI ESSA SOLUÇÃO TÃO
SIMPLÓRIA QUE TENHO MEDO DE QUE ELE ESTEJA FUNCIONANDO BEM ´SÓ PRA ME ENGANAR´...
GOSTARIA DE UMA OUTRA SUGESTÃO SOBRE COMO POSSO EVITAR ISSO (QUE ELE ATUALIZE MAIS DE UMA VEZ,
O MESMO Nº DE PEDIDO)
VALEU !
Alexandre Tavares
Campina Grande - PB
procedure TFrmPedidos.SpeedButton1Click(Sender: TObject);
var
SomaT: Real;
NPed: Integer;
Begin
SomaT:= 0;
NPed:= datamodule2.AdotabPedidoCodPedido.AsInteger;
If (DBEdit4.Text) <> ´´ Then
Application.MessageBox(´Para Este Pedido o Estoque já foi Atualizado´,´Atenção´,MB_OK)
Else
If Trim (DBEdit3.Text) = ´´ Then
Application.MessageBox(´faltando a Data de Recebimento´,´Atenção´,MB_OK)
Else
Begin
With DataModule2 Do
Begin
ADOQrEstoque.Active:= False;
ADOQrEstoque.SQL.Clear;
ADOQrEstoque.SQL.Add(´Select Distinct(CodProd),Qde, PrecoUnit´);
ADOQrEstoque.Sql.Add(´ From TabItems Where CodPedido = ´);
ADOQrEstoque.SQL.Add (IntToStr(NPed));
ADOQrEstoque.Active:= True;
ADOQrEstoque.First;
While Not ADOQrEstoque.Eof Do
Begin
SomaT:= SomaT + ADOQrEstoque.FieldByName(´Qde´).Value * ADOQrEstoque.FieldByName(´PrecoUnit´).Value;
DataModule2.ADOTabPedido.Edit;
DBEdit4.Text:= FloatToStrF(SomaT, Fffixed, 9,2);
DataModule2.ADOTabPedido.Post;
ADOQrAtualizaEstoque.Active:= False;
ADOQrAtualizaEstoque.Parameters.ParamByName(´Codigo´).Value:= ADOQrEstoque.FieldByName(´CodProd´).AsInteger;
ADOQrAtualizaEstoque.Parameters.ParamByName(´Quant´).Value:= ADOQrEstoque.FieldByName(´Qde´).AsInteger;
ADOQrAtualizaEstoque.ExecSQL;
DataModule2.ADOTabProduto.Refresh;
ADOQrEstoque.Next;
End;
End;
End
end;
COM O DBEdit3(Data de Recebimento); ACRESCENTEI O 1º IF(If (DBEdit4.Text) <> ´´ Then
Application.MessageBox(´Para Este Pedido o Estoque já foi Atualizado´,´Atenção´,MB_OK)
PARA QUE ALÉM DE CHECAR SE A DATA DE RECEBIMENTO ESTÁ PREENCHIDA, ELE TAMBÉM VERIFIQUE
SE O VALOR DE DBEdit4(Valor do Pedido) também está preenchido!
FIZ ISSO PORQUE SEM ESSES IF´s, TODA VEZ QUE EU CLICAVA NO BOTÃO ATUALIZAR, ELE ACRESCENTAVA
(PARA UM MESMO Nº DE PEDIDO) A MESMA QUANTIDADE NO ESTOQUE!
A QUESTÃO É QUE, APESAR DE ESTAR, ATÉ O MOMENTO FUNCIONANDO BEM, EU ACHEI ESSA SOLUÇÃO TÃO
SIMPLÓRIA QUE TENHO MEDO DE QUE ELE ESTEJA FUNCIONANDO BEM ´SÓ PRA ME ENGANAR´...
GOSTARIA DE UMA OUTRA SUGESTÃO SOBRE COMO POSSO EVITAR ISSO (QUE ELE ATUALIZE MAIS DE UMA VEZ,
O MESMO Nº DE PEDIDO)
VALEU !
Alexandre Tavares
Campina Grande - PB
procedure TFrmPedidos.SpeedButton1Click(Sender: TObject);
var
SomaT: Real;
NPed: Integer;
Begin
SomaT:= 0;
NPed:= datamodule2.AdotabPedidoCodPedido.AsInteger;
If (DBEdit4.Text) <> ´´ Then
Application.MessageBox(´Para Este Pedido o Estoque já foi Atualizado´,´Atenção´,MB_OK)
Else
If Trim (DBEdit3.Text) = ´´ Then
Application.MessageBox(´faltando a Data de Recebimento´,´Atenção´,MB_OK)
Else
Begin
With DataModule2 Do
Begin
ADOQrEstoque.Active:= False;
ADOQrEstoque.SQL.Clear;
ADOQrEstoque.SQL.Add(´Select Distinct(CodProd),Qde, PrecoUnit´);
ADOQrEstoque.Sql.Add(´ From TabItems Where CodPedido = ´);
ADOQrEstoque.SQL.Add (IntToStr(NPed));
ADOQrEstoque.Active:= True;
ADOQrEstoque.First;
While Not ADOQrEstoque.Eof Do
Begin
SomaT:= SomaT + ADOQrEstoque.FieldByName(´Qde´).Value * ADOQrEstoque.FieldByName(´PrecoUnit´).Value;
DataModule2.ADOTabPedido.Edit;
DBEdit4.Text:= FloatToStrF(SomaT, Fffixed, 9,2);
DataModule2.ADOTabPedido.Post;
ADOQrAtualizaEstoque.Active:= False;
ADOQrAtualizaEstoque.Parameters.ParamByName(´Codigo´).Value:= ADOQrEstoque.FieldByName(´CodProd´).AsInteger;
ADOQrAtualizaEstoque.Parameters.ParamByName(´Quant´).Value:= ADOQrEstoque.FieldByName(´Qde´).AsInteger;
ADOQrAtualizaEstoque.ExecSQL;
DataModule2.ADOTabProduto.Refresh;
ADOQrEstoque.Next;
End;
End;
End
end;
Alexandretavares
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)