No se entiende muy bien lo que haces con el codigo pero proba cambiar
if (not Eof) then begin
Código Delphi
[-]
if Query.RecordCount = 0 then
else
como sabes a que campo esta apuntando el query
deberias agregarle un order by codigo
entiendo que codigo es la clave y va en orden ascendete
luego query.last para ir al ultimo y ver cual es el ultimo codigo agregado
va por lo menos eso es lo que entiendo... si no deberias explicarte detalladamente