Anmelden

View Full Version : AS/400 UPDATE von Access über VBA



otto-mueller
05-12-03, 09:31
Hallo allerseits,

ich habe folgendes Problem:

Mein System:
- Access 2000
- ODBC-Verbindung zu AS/400-DB
- VBA
- AS/400

Eine Tabelle aus einer AS400-Bibliothek ist über ODBC-Verbindung in Access verknüpft.

Ich versuche über Access Excel-Dateien Zeile für Zeile auszulesen und per ODBC die entsprechenden Datensätze in der AS/400-Tabelle (Verknüpfte ODBC-Tabelle) zu aktualisieren. Das ganze läuft über einen VBA-Code.

Ein Ausschnitt des Codes:



For i = 10 To 13
CurrentDb.Execute "UPDATE [tblBestellung] SET [tblBestellung].[Straße] ='" & Range("J" & i) & "' WHERE [BestellNr] =" & Range("A" & i) & "AND [Frachtkosten]=" & 1 & ";"
Next i


Es kommt immer zum Fehler 3073, die Meldung lautet ungefähr wie folgt:
"Die Abfrage muss einen aktualisierbaren Teil haben" oder so ähnlich

Woran kann es denn liegen?

Kann mir jemand dabei helfen?

Vielen vielen Dank vorab

Viele Grüße

Otto

Fuerchau
05-12-03, 09:42
In der ODBC-Einstellung muss Commitment-Control abgeschaltet werden, wenn deine AS/400-Tabelle nicht journalisiert wird.
Anschließend muss die Tabelle ggf. neu verknüpft bzw. die Verknüpfung aktualisiert werden.

Als Alternative kann ich dir auch mein Excel-Addin "Uplaod400" anbieten (siehe hierzu meine Homepage).

otto-mueller
07-12-03, 23:18
Hallo,

was heißt "journalisiert"? Ist es eine wichtige Funktion?

Wie kann ich die ODBC-Verknüpfung per VBA aktualisieren??

Der Code vom Upload400.xla ist schreibgeschützt?!?!?

Danke nochmal

Gruß

Otto

Fuerchau
08-12-03, 10:30
In der ODBC-Verwaltung für Client-Access Registerkarte "Server" dann "Erweitert" wird die Journalisierung definiert "Sofortiges Commit (*NONE)" ist dann einzustellen.

Journalisierung ist in Access die Funktion "Transaktionssteuerung" die mit den Methoden "BeginTransaction" usw. durchgeführt wird. Dies stellt eine Möglichkeit dar, Datenbankänderungen konsistent zu halten, da zusammenhängende "Transaktionen" definiert werden.

Auf der AS/400 gibt es die Möglichkeit auch, wird aber bei vielen Standardprodukten eher selten verwendet.

Um per VBA eine ODBC-Verbindung einzustellen gibt es nur in DAO die Methode "RegisterDatabase" in der der Connection-String der Verbindung genau definiert werden muss.
Der Befehl kann jederzeit verwendet werden, eine vorhandene ODBC-Konfiguration wird dadurch wiederhergestellt:



DAO.RegisterDatabase "MyDsn", _
"Client Access ODBC Driver (32-bit)", _
True, _
"DBQ=MyLib" & vbCr & _
"CONNTYPE=1" & vbCr & _
"TRANSLATE=1" & vbCr & _
"COMPRESSION=1" & vbCr & _
"SEARCHPATTERN=0" & vbCr & _
"XDYNAMIC=1" & vbCr & _
"LAZYCLOSE=0" & vbCr & _
"CMT=0" & vbCr & _
"DFTPKGLIB=QTEMP" & vbCr & _
"SYSTEM=MySystem" & vbCr


Der Code von Upload400 ist natürlich schreibgeschützt schließlich möchte ich damt auch Geld verdienen.

otto-mueller
24-05-04, 14:59
Hallo,

vielen Dank für die Hilfe.


In der ODBC-Verwaltung für Client-Access Registerkarte "Server" dann "Erweitert" wird die Journalisierung definiert "Sofortiges Commit (*NONE)" ist dann einzustellen.

Das hat tatsächlich funktioniert. Ich habe "Sofortiges Commit (*NONE)" eingestellt und hat es schon funktioniert.

Danke nochmal

Gruß
Otto