PDA

View Full Version : CWB011 Ein an einen Systemaufruf übergebener Puffer kann die Rückgabedaten



rcramer
27-10-05, 12:37
Hallo,

ich habe eine AS400 mit Release V5R2M0 und lassen von einem Cliebt eine Anwendung gegen die DB2/400 laufen.
Auf dem Client ist ebenfalls iSeries Access V5R2M0 mit Servicepack SI16915

Bei einem Aufruf kommt folgende Meldung:
Database Access Error Rc = 30200
FEHLER BESCHREIBUNG : [IBM][Client Access Express ODBC-Treiber (32-Bit)]Spalte 7: CWB0111 - Ein an einen Systemaufruf übergebener Puffer kann die Rückgabedaten nicht aufnehmen

Kann mir da jemand einen Tip geben?

Gruß
Reinhold

TARASIK
27-10-05, 12:43
Hallo Reinhold,
poste entweder hier Deine Emailaddresse oder schicke sie mir
über private Nachrichten, dann sende ich eine Email.

rcramer
27-10-05, 12:50
Hallo,

hier meine E-Mail Adresse:
rcramer@pi-ag.com

Fuerchau
27-10-05, 13:06
Scheint ein Problem bei DBCS bzw. UNICODE-Daten zu sein.
Mit welchen Methoden greifst du auf die AS/400 zu ?
- verküpfte Tabelle
- DAO
- ADO
Enthält deine Datenbank-Tabelle ggf. Felder mit CCSID 13488 ?
Access/DAO kommt dann mit dem Feldtyp nicht zurecht.

Wenn du native mit ADO zugreifst, gibt es da keine Probleme.

rcramer
27-10-05, 13:24
Ich die ODBC-Datenquelle definiert und das Programm greift mit SQL-Statement auf Physische Tabellen der iSeries zu.
Die Tabellen haben alle die CCSID 273
DAO und ADO kenne ich leider nicht.
Native kann ich den Select nicht absetzen da er über mehrere Seiten gehen würde.

Fuerchau
27-10-05, 13:33
Nunja, das Programm muss ja irgendwie die SQL-Statements ausführen.
Dazu gibt es mehrere Methoden:
ActiveX-Objekte á la ADO/DAO oder in C/C++ die nativen C-SQLxxx-Befehle.

In ADO/DAO dürften diese Probleme nicht auftreten, da diese intern genügend Speicher bereitstellen.
Verwendet man direkte C-Befehle muss das Programm nun mal Puffer bereitstellen und, wie die Meldung ja besagt, ist der Empfangspuffer für die 7. Spalte zu klein !
Prüfe mal den Select, welches das 7. Feld ist, wie gross es ist und wieviel Puffer für SQLBindColumn/SQLGetData bereitgestellt wird.

rcramer
27-10-05, 14:07
Danke für die Hilfe, es liegt an der Programmierung. Ich habe festgestellt das eine 2k große Variable mit 2,5k gefüllt werden soll.

Fuerchau
27-10-05, 14:56
Für solche Fälle hilft z.B. SQLDescribeCol um entsprechenden Puffer anzulegen.