ODBC mit AS/400 ist nun mal leider etwas schwierig.
Wenn du mit DAO arbeitest ist es wichtig, dass du das Recordset mit dbOpenDynaset eröffnest.
In der Eigenschaft recordset.Updatable erfährst du, ob das geklappt hat.
Das Problem des ODBC ist auch, ob du mit ODBC-Direct oder über JET die Datei eröffnest.
Wenn über JET gearbeitet wird, stellt JET automatisch fest, über welchen eindeutigen Schlüssel ein Update möglich ist. Auch dies funktioniert ausschließlich mit dbOpenTable.

Dies ist aber halt alles nicht unbedingt SQL-like und der CA-ODBC unterstützt halt ausschließlich native SQL.

Ansonsten gilt halt:
update file set f1=?, f2=?, ...
where k1=? and k2=? ...

Das kannst du als Query-Objekt erstellen.
Jedes ? als Paramtermarker ergibt ein Parameter-Objekt in der Parmeters-Auflistung.
Die einzelnen Parameter kannst du dann so füllen und den update dann durchführen:

myqry(0) = Wert1
myqry(1) = Wert2
:
myqry(n) = recordset!Key1
myqry(n+1) = recordset!Key2
:
:
myqry.execute