Fórum Reverter processo atual após Cancelar #339917
04/04/2007
0
O meu problema, é fazer tudo isso ao contrário, ou seja, reverter o processo na tabela quando ele clicar em Cancelar ou fechar a janela sem postar. To vendo q vai me parecer complicado, alguém tem uma luz pra me dar? Eu tentei também assim (quando ele clica no botão Cancelar Nota), mas não consegui:
IbProdutos.Open; IbItens.First; while IbItens.Eof do begin if IbItens.FieldByName(´PRODSERV´).AsString = ´PROD´ then begin while IbProdutos.Eof do begin if IbProdutos.FieldByName(´PCODIGO´).AsInteger = IbItens.FieldByName(´ICODPRODUTO´).AsInteger then begin IbProdutos.First; IbProdutos.FieldByName(´PQTDE´).AsInteger := IbProdutos.FieldByName(´PQTDE´).AsInteger - IbItens.FieldByName(´IQUANTIDADE´).AsInteger; end; IbProdutos.Next; end; end; IbItens.Next; end;
Legenda, IbProdutos é uma IbQuery usando a tabela Produtos, to usando Firebird como banco de dados e os componentes da palheta InterBase. IbItens é minha outra IbQuery usando a tabela Nota.
IbItens e IbProdutos tem um codigo em comum, e os q estão listados na nota atual, quando cancelados, precisa-se voltar a quantidade anterior. O q estou fazendo de errado? Há um jeito melhor?
Muito obrigado.
Castor
Curtir tópico
+ 0Posts
04/04/2007
Castor
if IbItens.FieldByName(´PRODSERV´).AsString = ´PROD´ then
significa q ele tá vendo se a linha atual é um produto ou um serviço, pq pode-se cadastrar os dois na mesma nota, mas preciso saber se é produto pra poder fazer reduzir ou reverter as quantidades.
Gostei + 0
04/04/2007
Castor
// revertendo quantidade dos produtos IbProdutos.Open; IbItens.First; while IbItens.Eof do begin if IbItens.FieldByName(´PRODSERV´).AsString = ´PROD´ then begin while IbProdutos.Eof do begin if IbProdutos.FieldByName(´PCODIGO´).AsInteger = IbItens.FieldByName(´ICODPRODUTO´).AsInteger then begin IbProdutos.First; IbProdutos.FieldByName(´PQTDE´).AsInteger := IbProdutos.FieldByName(´PQTDE´).AsInteger + IbItens.FieldByName(´IQUANTIDADE´).AsInteger; end; IbProdutos.Next; end; end; IbItens.Next; end;
Gostei + 0
04/04/2007
Castor
Por enquanto vai a solução:
IbProdutos.Open; IbItens.First; while not IbItens.Eof do begin if IbItens.FieldByName(´IPRODSERV´).AsString = ´PROD´ then begin IbProdutos.First; while not IbProdutos.Eof do begin if IbProdutos.FieldByName(´PCODIGO´).AsInteger = IbItens.FieldByName(´ICODPRODUTO´).AsInteger then begin IbProdutos.Edit; IbProdutos.FieldByName(´PQTDE´).AsInteger := IbProdutos.FieldByName(´PQTDE´).AsInteger + IbItens.FieldByName(´IQUANTIDADE´).AsInteger; end; IbProdutos.Next; end; end; IbItens.Next; end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)