¿Podrías poner un pequeño ejemplo de que es lo que realmente quieres?, porque pienso que te estas liando un poco.
Lo que estás haciendo es ir asignando continuamente al campo importe_letra todos los valores de query1Neto, quedando al final en todos los registros el último valor de query1Neto. Es decir, imaginate que tienes dos registros en la tabla nomina_datos
Código:
nomina importe_letra
1 1200
2 1500
y en el query1Neto tienes los siguientes valores 1000, 500 y 1100. Tras la primera iteración tu tabla quedará así
Código:
nomina importe_letra
1 1000
2 1000
tras la segunda
Código:
nomina importe_letra
1 500
2 500
y finalmente
Código:
nomina importe_letra
1 1100
2 1100
cosa que no creo que sea lo que buscas, ya que sino no se para que realizas todas las iteraciones ya que bastaria con hacer :
Código Delphi
[-]
QUERY1.Active:=TRUE;
query1.Last
letras1.Numero:= query1.FieldByName('neto').Value;
query2.sql.Text:='update nomina_datos set importe_letra='+ QuotedStruppercase(letras1.AsString));
query2.ExecSQL;
El resultado de la ejecución de este último trozo de código y la del que tu pusiste son equivalentes, siendo mejor esta última opción ya que te ahorras unas cuantas iteraciónes inutiles.
Mi pregunta es : ¿Es esto lo que realmente quieres conseguir?, si no es así pon un ejemplo del estilo al que yo puse.
Un saúdo