Delphi

boa tarde, estou usando o seguinte codigo para verificar a ultima consulta no banco de dados

verificaId : integer;
idFinal : integer;

qryId = select top(1) id from mensagens
order by id desc // exemplo de como esta o sql na query

qryId.ExecSQL;
if (qryid.Active) then
begin
if not (qryid.IsEmpty) then
begin
idFinal := qryid.FieldByName(‘id’).AsInteger;
end;
end;

if (idFinal > verificaId) then
begin
verificaId := idFinal;
Notificacao.ShowBalloonHint;
end;

este codigo esta dentro de um timer, porem todas vez que esse codigo e chamado o id acusa sempre ser maior, o verificaid é zerado a todo momento tornando o if sempre verdadeiro.
Alguem sabe no que estou errando?

up