While não funciona

30/06/2003

0

Estou precisando de ajuda urgente. Com faço para utilizar o while nesta procedure. Ele só está executando o 2º while uma vez, por quê? O que estou fazendo de errado.
Grato pela ajuda,

procedure TFProdutos.FecharPedido;
Var AuxTotal:real;
begin
DMTabelas.TPedidosTemp.Active:=False;
DMTabelas.TPedidosTemp.Close;
AuxTotal:=0;
DMTabelas.Tcliente.Open;
DMTabelas.Tcliente.FindKey([AuxCodCliente]);
FRelatorioGeral.QRLabel9.Caption:=DMTabelas.TclienteNomeCliente.AsString;
DMTabelas.Tcliente.Close;
DMTabelas.TPedidosTemp.Active:=True;
DMTabelas.TPedidosTemp.Open;
With DMTabelas Do
Begin
TPedidosTemp.First;
While Not(TPedidosTemp.Eof) Do
Begin
// Tabela Saída é aberta
TSaida.Open;
// Na Tabela Saída é criado um novo registro
TSaida.Insert;
// Tabela Saída é aberta para edição
TSaida.Edit;
// Tabela Saída recebe a data da nova saída de produtos
TSaida.FieldByName(´Data´).Value:=Now;
// Tabela Saída recebe o código produto vendido
TSaidaCodProduto.AsInteger:=TPedidosTempCodProduto.AsInteger;
// Tabela Saída recebe a quantidade do produto vendido
TSaidaQtdSaida.AsInteger:=TPedidosTempQtdProduto.AsInteger;
// Tabela Saída recebe valor unitário do produto vendido
TSaidaValorUnitario.Value:=TPedidosTempPrecoUnitario.Value;
// Tabela Saída recebe Valor total da venda para este produto
TSaidaValorTotal.Value:=(TPedidosTempQtdProduto.AsInteger)*(TSaidaValorUnitario.Value);
// Tabela Saída é gravada
TSaida.Post;
// Tabela Saída é atualizada
TSaida.Refresh;
TEstoque.Active:=False;
TEstoque.Active:=True;
TEstoque.Open;
TEstoque.First;
While Not(TEstoque.eof) Do
Begin
If (TEstoqueCodProduto.AsInteger)=(TPedidosTempCodProduto.AsInteger) Then
Begin
TEstoque.Edit;
// Na tabela Estoque, Quant de estoque recebe sua atual quant - a nova quant saída
TEstoqueQtdEstoque.AsInteger:=TEstoqueQtdEstoque.AsInteger-TSaidaQtdSaida.AsInteger;
// Tabela Estoque é gravada
TEstoque.Post;
// Tabela Estoque é atualizada
TEstoque.Refresh;
TProduto.Active:=False;
TProduto.Active:=True;
TProduto.Open;
TProduto.First;
While Not (TProduto.Eof) Do
Begin
If (TProdutoCodProduto.AsInteger)=(TPedidosTempCodProduto.AsInteger) Then
Begin
// Tabela Produtos é aberta para edição
TProduto.Edit;
// Tabela Produtos é atualizada
TProdutoQuantEstoque.AsInteger:=TEstoqueQtdEstoque.AsInteger;
// Tabela Produtos é gravada
TProduto.Post;
End;
TProduto.Next;
End;
End;
TEstoque.Next;
End;
AuxTotal:=AuxTotal+TPedidosTempValorTotal.Value;
TEstoque.Close;
TSaida.Close;
TProduto.Close;
TPedidosTemp.Next;
End;
End;
DMTabelas.TPedidosTemp.Close;
DMTabelas.TPedidosTemp.Open;
FRelatorioGeral.QRLabel11.Caption:=FloatToStr(AuxTotal);
DMTabelas.TPedidosTemp.Filtered:=False;
FRelatorioGeral.QuickRep1.Preview;
DMTabelas.TPedidosTemp.Close;
end;


Mineiro

Mineiro

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar