Anmelden

View Full Version : Anfügeabfrage aus MS Access via ODBC



lucullus
12-11-10, 14:16
Moin, moin aus dem Norden der Republik!

Mich treibt gerade die Kombination MS Access / DB2-400 und odbc zum Wahnsinn.

Aus einer "MS Access-Anwendung" soll eine kleine Tabelle auf die iseries übertragen werden. (3 Felder: 1x Zahl, 1x Char. und 1x Memo). Diese kleine Tabelle wird in dem MS-System gepflegt, soll jetzt aber auf der iseries ausgewertet (Cobol) werden!

Eine identisch aufgebaute Tabelle auf der iseries erstellt.
Via MS Access, Tabellenverknüpfung und Anfügeabfrage soll die Tabelle auf der iseries gefüllt werden.

Ich bekomme folgende Fehlermeldung:
"ODBC: Einfügen in einer verknüpften Tabelle "xx_FLIESTXT' fehlgeschlagen.
IBM System i Access ODBC-Treiber] Spalte 3: CWBNL0107 - 3784 Byte umgesetzt, 8 Fehler beim Beginn an Position 192 (scp=1202 tcp=273 pad=0 sl =3784 ti=3784) gefunden (#30200)
IBM System i Access ODBC-Treiber] Fehler bei Zuordnung (#30019)"

Die Überraschung für mich:
Wenn ich dieverknüpfte Tabelle via MS Access aufrufe, wird mir immer der erste Record angezeigt, komplett und fehlerfrei.
Kann mir einer einen Tip geben wie ich aus dieser Falle rauskomme?

Danke im voraus.

Gruß
Andreas

Fuerchau
12-11-10, 14:44
Ich denke, das Problem wird das Memo-Feld sein (Inkompatibilität).
Wie hast du denn die Tabelle auf der AS/400 erstellt ?

Ggf. kannst du eine Tabellenerstellungsabfrage via ODBC bzw. einen Tabellen-Export über ODBC auf die AS/400 durchführen und dir die Tabelle mal durch Access erstellen lassen.

Ein Memo-Feld ist müsste CLOB mit Unicode (CCSID 13488) sein.
Du müsstest dies als als VARGRAPHIC(nn) CCSID 13488 erstellen.

lucullus
15-11-10, 09:32
Moin, moin

ich komme leider nicht weiter.

Die Tabelle habe ich mir im i Navigator erstellt:

Artikelnummer, decimal, 7,0
Fliesztxt, clob, 1MB, CCSID 273

Die genannte CCSID 14388 ist bei uns anscheinend nicht installiert.

Egal wie ich versuche die Tabelle zu befüllen:
Anfügeabfrage oder odbc-Export, es erscheint immer die schon angeführte Fehlermeldung.
Der Klick auf den Hilfebutton der Fehlermeldung bringt immer:

ODBC: Einfügen in einer verknüpften Tabelle <Tabelle> fehlgeschlagen. (Fehler 3155)ODBC: Einfügen in einer verknüpften Tabelle <Tabelle> fehlgeschlagen. (Fehler 3155)

Ich bin aber der Eigentümer der Tabelle und habe alle Berechtigungen!??

Bevor ich mich aber verrenne: gibt es andere, vielleicht einfachere Wege Memofelder aus MS Access auf die iSeries zubekommen?

Gruß

Andreas

Fuerchau
15-11-10, 09:56
Bei der CCSID hast du dich vertippt: 13488!

Ich denke, CLOB wird von MS-Access nicht unterstützt, da diese mit den Chunk-Methoden eines Recordset-Fields gelesen und befüllt werden.
Hier hilft nur ein VARCHAR bzw. VARGRAPHIC, wobei hier die Länge auf ca. 32.000 (VARCHAR) bzw. 16.000 (VARGRAPHIC) abzüglich der restlichen Felder beschränkt ist.

Alternativ kannst du ja auch eine VBA-Routine schreiben, die deine interne Tabelle liest und in die verknüpfte Tabelle schreibt.