Hola.
Parece ser un problema del Access 2000. Lo he probado, y simplemente no acepta subconsultas en el UPDATE (sea la subconsulta la propia tabla a modificar, o no).
Si solo fuera un problema de que la tabla es la misma en la subconsulta y en el UPDATE, bastaría con crear una vista igual a la tabla, y hacer la subconsulta sobre la vista. Pero lo he probado, y parece ser que Access no permite ningún tipo de subconsulta en el UPDATE (ni sobre la misma tabla, una vista, u otra tabla cualquiera).
El problema de utilizar cursores SQL, es que se utilizan desde procedimientos almacenados (donde se pueden indicar varias instrucciones SQL : para definir el cursor, recorrerlo, actualizar la tabla, ...), pero Access no tiene un lenguaje de procedimientos almacenados.
Así parece ser que tendrás que hacerlo todo en Delphi. Un cursor en Delphi, es un Dataset abierto con un TADOQuery, lo abres y lo puedes recorrer y modificar.
Simplemente pón un TQuery para recorrer la tabla, y otro TQuery para averiguar el valor buscado. Recorres el primer Query y para cada registro, cierras y vuelves a abrir el segundo Query, averiguando el valor que necesitas para modificar el registro actual en el primer Query.
Más o menos :
Código:
ADOQuery1.Open
while not ADOQuery1.Eof do begin
ADOQuery2.Params.ParamValues['Codigo'] := ADOQuery1.FieldValues['Codigo'];
ADOQuery2.Open;
ADOQuery1.Edit;
ADOQuery1.FieldValues['Campo'] := ADOQuery2.FieldValues['Resultado'];
ADOQuery1.Post;
ADOQuery2.Close;
ADOQuery1.Next;
end;
Espero que sea esto lo que buscas.
Saludos.