Gib doch mal zusätzlich im ShowMessage RowsAffected mit aus:
ShowMessage(Format('ArtNr: %d - aktuallisierte Zeilen: %d',] AccessQuery.FieldByName('ArtNr').Value, MyQuery.RowsAffected]));
Da oxid keine Zeichenfolge ist, geht es ohne Quotes.
Hast Du mal geprüft, ob es die Werte für die ArtNr in der
MySQL-Tabelle auch gibt?
Wenn es sie nicht gibt, wirft das Update keine Fehler. Es wird dann eben kein Datensatz akuallisiert. RowsAffected sollte dann = 0 sein.
Wie prüfst Du denn in der
MySQL-Datenbank, ob Deine Routine Erfolg hatte oder nicht?
Musst Du bei der Prüfung eventuell in dem Werkzeug eine neue Transaktion starten, weil Du sonst ggfls. nur die Daten aus der schon laufenden Transaktion siehst und nicht die in weiteren Transaktionen Deines Programmes aktuallisierten Werte?