Quizá un poco descabellado pero se me ocurre esto:
Creas una tabla
numeros con un sólo campo
numero e insertas todos los números hasta el mayor posible. Esto lo puedes hacer con un simple ciclo:
Código Delphi
[-]
Query.SQL.Text := "insert into numeros values(:numero)";
for I := 1 to MaximoNumero do
begin
Query.ParamByName('numero').AsInteger := I;
Query.ExecSQL;
end;
Luego, para averiguar cuáles número faltan entre un primer y último número usas la consulta:
Código SQL
[-]
select * from numeros
where
numero not in (select numero from tu_tabla) and
numero between :primero and :ultimo
Sustituyes los parámetros y lanzas la consulta:
Código Delphi
[-]
Query.ParamByName('primero').AsInteger := EditPrimerNumero.Text;
Query.ParamByName('ultimo').AsInteger := EditUltimoNumero.Text;
Query.Open;
// Saludos