Fórum EOF, não consigo chegar no final da tabela. #235492

01/06/2004

0

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

Responder

Posts

01/06/2004

Comodelphi

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.


Responder

Gostei + 0

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

Aceitar