Das hier geht nicht?
(ungetestet, können Tippfehler drin sein)
function TForm1.nextEntry(t: TDatetime; id: integer): String;
begin
with myquery do
begin
SQL.Text := 'select min(TIME) from TABELLE where ID_OBJECT=:id and TIME>:time';
ParamByName('id').AsInteger := id;
ParamByName('time').AsDateTime := t;
Ganz abgesehen davon ob Prior funktioniert oder nicht: du könntest den Wert mit einer einzigen SQL-Abfrage ermitteln, OHNE die Datensätze einzeln durchzugehen.
select min(TIME) from TABELLE where ID_OBJECT=:id and TIME>=:time
Außerdem gibst du keine Sortierreihenfolge an - es ist also mehr oder minder Zufall, wenn es so klappt wie du es machst.