Como testar se é o ultimo registro databela
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
Curtidas 0
Respostas
Edilcimar
07/03/2006
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)
GOSTEI 0
Paullsoftware
07/03/2006
agora fiquei vuando...
eus empre faço assim para varrer uma tabela inteira até o final...
Isso não funciona??
uso a base em interbase, até hoje tem funcionado comigo! :shock:
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:
GOSTEI 0
Fabiano Góes
07/03/2006
PaullSoftware,
Isso funciona perfeitamente:
Porem eu preciso executar uma ação especifica quando chegar o ultimo registro.
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.
GOSTEI 0
Spiritwwwalker
07/03/2006
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.
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.
GOSTEI 0
Edilcimar
07/03/2006
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.
GOSTEI 0
Paullsoftware
07/03/2006
certo, então vc não pode fazer assim:
eu fiz um teste aqui e funcionou! :roll:
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:
GOSTEI 0
Fabiano Góes
07/03/2006
Galera muito obrigado pela atenção de todos,
a solução do PauloSoftware funcionou bem para o que eu precisava.
Muito obrigado a todos !!!
a solução do PauloSoftware funcionou bem para o que eu precisava.
Muito obrigado a todos !!!
GOSTEI 0