ciao nicola
volevo chiederti di fare una prova:
il metodo Locate è in realtà una funzione quindi dovresti scrivere:
if SQLQuery1.Locate('cod_age','FA0160',[]) then
ShowMessage(IntToStr(SQLQuery1.RecNo))
else
ShowMessage('not found!');
credo infatti che più che di chiave parziale si tratti di chiave non trovata.
Facci sapere.
Poi un altro consiglio ;)
Locate in realtà non esegue solo una ricerca ma: sposta il cursore del dataset, valorizza tutti i campi persistenti e ricalcola quelli calcolati.
Nei dataset con pochi record e pochi campi calcolati non si percepisce (in termini di tempo) alcun ritardo ma se ci sono molti record e/o molti campi calcolati il programma ne potrebbe risentire pesantemente.
Se non si necessita dello spostamento del cursore e di tutto quello che ne consegue il consiglio è quello di usare Lookup che: dopo aver cercato la chiave, ritorna esclusivamente i campi di cui hai bisogno senza spostare il cursore.