EOF, não consigo chegar no final da tabela.

Delphi

01/06/2004

Pessoal,

Estou com o seguinte problema: uso o código abaixo para calcular o valor total de uma NF. Incluo o primeiro item e tudo blz.
Ao incluir o segundo item, o ponteiro não vai para o final da tabela. Do primeiro para o segundo o ponteiro se move, mas não
sai do segundo. ou seja, fica dentro do laço infinitamente. Sei q tem alguma coisa de errado, só não consigo achar. Já fiz
backup, restore, gfix para ver se o problema é no arquivo... e nada. Até recriei as tabelas e continua o mesmo problema.
Desde já agradeço qualquer ajuda. Estou usando o FB 1.5 final.


procedure TdmMaster.IBDItemNFEntradaAfterPost(DataSet: TDataSet);
var
  bConsiderarDesconto: Boolean;
begin
  IBTRMaster.CommitRetaining;
  IBDItemNFEntrada.DisableControls;
  IBDNFEntrada.Edit;
  IBDNFEntradaVALORDOSPRODUTOSCALCULADO.Value := 0;
  IBDNFEntrada.Post;
  IBDItemNFEntrada.First;
  while not IBDItemNFEntrada.Eof do
  begin
    IBDNFEntrada.Edit;
    IBDNFEntradaVALORDOSPRODUTOSCALCULADO.Value :=
      IBDNFEntradaVALORDOSPRODUTOSCALCULADO.Value +
      IBDItemNFEntradaVALORTOTAL.Value;
    IBDNFEntrada.Post;
    IBDItemNFEntrada.Next;
  end;
  calcularNFE(IBDNFEntradaVALORDOSPRODUTOSCALCULADO.Value,
    bConsiderarDesconto, loja);
  if IBDNFEntrada.State in [dsedit, dsinsert] then
    IBDNFEntrada.Post;
  IBDItemNFEntrada.EnableControls;
end;


uso o seguinte código para a ordem de compra e funciona:

procedure TdmMaster.IBDItemCompraAfterPost(DataSet: TDataSet);
begin
  IBTRMaster.CommitRetaining;
  IBDItemCompra.DisableControls;
  IBDOCompra.Edit;
  IBDOCompraTOTALDOPEDIDO.Value := 0;
  IBDOCompraTOTALDOSPRODUTOS.Value := 0;
  IBDOCompraIPI.Value := 0;
  IBDOCompra.Post;
  IBDItemCompra.First;
  while not IBDItemCompra.Eof do
  begin
    IBDOCompra.Edit;
    IBDOCompraTOTALDOSPRODUTOS.Value := IBDOCompraTOTALDOSPRODUTOS.Value +
      IBDItemCompraSUBTOTAL.Value;
    IBDOCompraIPI.Value := IBDOCompraIPI.Value + IBDItemCompraVALORIPI.Value;
    IBDOCompra.Post;
    IBDItemCompra.Next;
  end;
  IBDOCompraTOTALDOPEDIDO.Value := IBDOCompraTOTALDOSPRODUTOS.Value
    - IBDOCompraDESCONTOSTRIBUTADOS.Value
    - IBDOCompraDESCONTOSISENTOS.Value
    + IBDOCompraDESPESASTRIBUTADAS.Value
    + IBDOCompraDESPESASISENTAS.Value
    + IBDOCompraOUTRASDESPESAS.Value
    + IBDOCompraFRETE.Value
    + IBDOCompraICMSR.Value;
  IBDItemCompra.EnableControls;
end;



Lindomar.des

Lindomar.des

Curtidas 0

Respostas

Comodelphi

Comodelphi

01/06/2004

Garoto, Vc esta usando o evento AfterPost para atualizar a mesma tabela, não vai sair dai nunca mesmo, eu ja vi um erro desse mas não ficava em loop infinito dava Stack OverFlow. Se vc ta usando interbase pq vc não faz um trigger no banco???? .... Ou então coloca esse depois do click do botao que faz o Post, mas prefiro usar Trigger.


GOSTEI 0
POSTAR