Fórum Problemas com o EOF de uma Tabela #271906

11/03/2005

0

olá!

tenho 2 tabelas, que varro ela para pegar os fornecedores e respectivos pedidos..

porem sempre que chega no ultimo registro ele da EOF e nao ´pega´ este registro!

meu codigo eh assim:

while not MemData.EOF do
     //  while i <= (MemData.RecordCount) do
    inc(i);
    if MemDataINCLUIRCOMPRA.AsBoolean = True then
    begin

      NomeFornecedor := MemDataFornecedor.AsString;

      ListAddRoot(Lista, NomeFornecedor);

      SPCompra.ParamByName(´INCREMENTO´).AsInteger := 1;
      SPCompra.ExecProc;
      TbCompra.Append;
      TbCompraCOMPRA.AsString := StrZero(SPCompra.ParamByName(´VALOR´).AsString, 6);
      TbCompraFORNECEDOR.AsString := MemDataCODFORNECEDOR.AsString;
      TbCompraDATAPEDIDO.AsDateTime := Date;
      TbCompra.Post;

      CodCompra := StrZero(SPCompra.ParamByName(´VALOR´).AsString, 6);

      MemData.Edit;
      MemDataCODPEDIDO.AsString := CodCompra;
      MemData.Post;

      while (NomeFornecedor = MemDataFORNECEDOR.AsString) and (i <= (MemData.RecordCount)) do
      begin
        TbItensCompra.Append;
        TbItensCompraCOMPRA.AsString := CodCompra;
        TbItensCompraPRODUTO.AsString := MemDataPRODUTO.AsString;
        TbItensCompraCOR.AsString := MemDataCOR.AsString;
        TbItensCompraQUANTIDADE.AsString := MemDataQNTAPEDIR.AsString;
        TbItensCompraCUSTO.AsString := MemDataULTCUSTO.AsString;
        TbItensCompraCODIGOBARRAS.AsString := MemDataCODIGOBARRAS.AsString;
        TbItensCompraCODIGOFORNECEDOR.AsString := MemDataCODFORNECEDOR.AsString;
        TbItensCompra.Post;
        TbItensCompra.ApplyUpdates;

        ListAddChild(Lista, CodCompra);

        Valor := Valor + (MemDataQNTAPEDIR.AsInteger * MemDataULTCUSTO.AsCurrency);
        MemData.Next;
        Inc(i);
      end;

      TbCompra.Edit;
      TbCompraSUBTOTAL.AsCurrency := Valor;
      TbCompraDESCONTO.AsInteger := 0;
      TbCompraTOTAL.AsCurrency := Valor;
      TbCompra.Post;
    end;
    MemData.Next;
    //  inc(i);
end;


eis minha pergunta: [b:d1417e0b70]o que está acontecendo? como resolvo isso?[/b:d1417e0b70]
Tentei com while not EOF, tentei com o for i:=1 to RecordCount, tentei Repeat...

e nada! :(


[]s e desde ja agradeco


Titanius

Titanius

Responder

Posts

11/03/2005

Emerson Nascimento

while not MemData.EOF do 
    if MemDataINCLUIRCOMPRA.AsBoolean then
    begin 

      NomeFornecedor := MemDataFornecedor.AsString; 

      ListAddRoot(Lista, NomeFornecedor); 

      SPCompra.ParamByName(´INCREMENTO´).AsInteger := 1; 
      SPCompra.ExecProc; 
      TbCompra.Append; 
      TbCompraCOMPRA.AsString := StrZero(SPCompra.ParamByName(´VALOR´).AsString, 6); 
      TbCompraFORNECEDOR.AsString := MemDataCODFORNECEDOR.AsString; 
      TbCompraDATAPEDIDO.AsDateTime := Date; 
      TbCompra.Post; 

      CodCompra := StrZero(SPCompra.ParamByName(´VALOR´).AsString, 6); 

      MemData.Edit; 
      MemDataCODPEDIDO.AsString := CodCompra; 
      MemData.Post; 

      // aqui você também pode utilizar o EOF
      while (NomeFornecedor = MemDataFORNECEDOR.AsString) and
          not MemData.EOF do
      begin 
        TbItensCompra.Append; 
        TbItensCompraCOMPRA.AsString := CodCompra; 
        TbItensCompraPRODUTO.AsString := MemDataPRODUTO.AsString; 
        TbItensCompraCOR.AsString := MemDataCOR.AsString; 
        TbItensCompraQUANTIDADE.AsString := MemDataQNTAPEDIR.AsString; 
        TbItensCompraCUSTO.AsString := MemDataULTCUSTO.AsString; 
        TbItensCompraCODIGOBARRAS.AsString := MemDataCODIGOBARRAS.AsString; 
        TbItensCompraCODIGOFORNECEDOR.AsString := MemDataCODFORNECEDOR.AsString; 
        TbItensCompra.Post; 
        TbItensCompra.ApplyUpdates; 

        ListAddChild(Lista, CodCompra); 

        Valor := Valor + (MemDataQNTAPEDIR.AsInteger * MemDataULTCUSTO.AsCurrency); 
        MemData.Next; 
      end; 

      TbCompra.Edit; 
      TbCompraSUBTOTAL.AsCurrency := Valor; 
      TbCompraDESCONTO.AsInteger := 0; 
      TbCompraTOTAL.AsCurrency := Valor; 
      TbCompra.Post; 
    end
    else // é necessário esse else, senão o next será efetuado desnecessariamente
      MemData.Next;



Responder

Gostei + 0

11/03/2005

Titanius

Obrigado amigo,

porem ainda nao funcionou... o ultimo registro continua nao entrando.. :(


[]s


Responder

Gostei + 0

11/03/2005

Titanius

amigo, achei o problema....

o problema estava no banco de dados, na definicao do campo.. :D



[]s


Responder

Gostei + 0

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

Aceitar