Locate sollte eigentlich auch true zurückgeben, wenn der Datensatz gefunden wurde, so dass man auch schreiben kann:
if
Query.Locate() then
Result:=
Query.FieldByName()
@haentschman: Kannst du das mit dem Locate-Problemen konkretisieren? Sind das bestimmte Szenarien, wo das nicht geht? Benutze das recht oft (mit TADOQuery allerdings) und hatte noch keine Probleme.