GARANTIR DESCONTO

Fórum Como testar se é o ultimo registro databela #315289

07/03/2006

0

Estou fazendo um loop em uma tabela e a cada registro quero saber se é o ultimo ou não :

   WHILE not qryPesquisa.Eof DO
     begin
       // Se é o ultimo registro ...
        
       qryPesquisa.Next;
     end;



Fabiano Góes

Fabiano Góes

Responder

Posts

07/03/2006

Edilcimar

dependendo do tipo de tabela que estiver utilizando, isto funciona (piradox), mas em outros casos não, pois não é feito um append e sim um insert(sgdb´s)


Responder

Gostei + 0

07/03/2006

Paullsoftware

agora fiquei vuando...

eus empre faço assim para varrer uma tabela inteira até o final...

Query.First;
While not Query.Eof do
 begin
 //Comandos serão executados enquanto não chegar no final
 Query.Next;
 end;

Isso não funciona??
uso a base em interbase, até hoje tem funcionado comigo! :shock:


Responder

Gostei + 0

08/03/2006

Fabiano Góes

PaullSoftware,

Isso funciona perfeitamente:
Query.First; 
While not Query.Eof do 
 begin 
 //Comandos serão executados enquanto não chegar no final 
 Query.Next; 
 end;


Porem eu preciso executar uma ação especifica quando chegar o ultimo registro.


Responder

Gostei + 0

08/03/2006

Spiritwwwalker

Prezado Fabiano:

Não sei se é a solução mais correta, mas se sua tabela possui um campo autonumeração, incrementado um a um (isto é, de maneira crescente), você também pode obter o maior registro utilizando a função MAX do SQL:

SELECT MAX CampoAutonumeração FROM NomeDaSuaTabela

Em resumo: maior registro = registro mais recente = último registro
Espero ter ajudado.


Responder

Gostei + 0

08/03/2006

Edilcimar

Se quiser fazer um teste para verificar que nem sempre o último registro incluído é o último da tabela em um sgdb, coloque 2 campos, um autoincremento e outro indexado, por ex: um campo string, com nomes, coloque alguns nomes, Antonio, Jorge, Maria, Roberto, Sonia e depois acrescente uma Ana, aí verá que a Ana estará em primeiro lugar na tabela (por causa do insert), mas terá a maior numeração.


Responder

Gostei + 0

08/03/2006

Paullsoftware

certo, então vc não pode fazer assim:
var
wUltimo : Integer;
Query.Open;
Query.Last;
wUltimo := Query.FieldByName(´Codigo´).AsInteger;
Query.First; 
While not Query.Eof do 
 begin 
 if Query.FieldByName(´Codigo´).AsInteger = wUltimo then
 //Comandos que serão executados quando chegar no último registro
 else
 //Comandos serão executados enquanto não chegar no final 
 Query.Next; 
 end;


eu fiz um teste aqui e funcionou! :roll:


Responder

Gostei + 0

08/03/2006

Fabiano Góes

Galera muito obrigado pela atenção de todos,
a solução do PauloSoftware funcionou bem para o que eu precisava.


Muito obrigado a todos !!!


Responder

Gostei + 0

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

Aceitar