Fórum Problemas com o EOF de uma Tabela #271906
11/03/2005
0
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
Curtir tópico
+ 0Posts
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;
Gostei + 0
11/03/2005
Titanius
porem ainda nao funcionou... o ultimo registro continua nao entrando.. :(
[]s
Gostei + 0
11/03/2005
Titanius
o problema estava no banco de dados, na definicao do campo.. :D
[]s
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)