PDA

View Full Version : ODBC Übergabe an AS400



Franz.Rung
03-09-14, 14:43
Hallo zusammen,

wieso läuft mir ein Datensatz in einem Textfeld bei der Übergabe an die AS400 auf folgende Fehlermeldung

Siehe Anhang

Gruss und Danke
Franz

Fuerchau
03-09-14, 15:01
Da muss wohl ein CCSID-Problem vorliegen.
Anscheinend prüft die AS/400 nun "härter" auf gültige Daten.
Was für ein Zeichen steht denn an Position 10?
In einem anderen Thread gabs hier ein Problem mit dem "€"-Zeichen.

AG1965_2
05-09-14, 12:13
Ja, da kommt man aber erst drauf, wenn man ganz genau schaut. Wenn man sich die drei Punkte ansieht, kommt einem der Abstand ein paar Pixel geringer vor als üblich. Es ist nämlich nur ein einziges Zeichen. Einige Microsoft Programme bieten Autoformatierung oder Autokorrektur, und da ist Default, dass aus drei Punkten ein einziges Zeichen zu machen. Das gibt es natürlich weder in CCSID 273 noch in 1141, dafür braucht man meines Wissens nach Unicode.
Kann man den Microsoft Programmen aber abgewöhnen.
Oder man konvertiert in ein Unicode-Feld, ersetzt das Zeichen durch drei Zeichen und konvertiert in sein normales DB-Feld.

Fuerchau
05-09-14, 13:16
Wenn man seine SQL's korrekt mit Parametermarkern und Parameterdefinitionen durchführt, kann dieser Fehler eigentlich nicht vorkommen.
Ist das Zielfeld ein SBCS (CCSID 273 o.ä.), sollte der Parameter als "adVarChar" definiert werden.
In diesem Fall konvertiert der OLEDB-Treiber MSDASQL (der bei ODBC verwendet wird) bereits den String von Unicode in SBCS-ANSI, ohne Fehlermeldung mit Ersatzzeichen (x'3F' = ?).
Wird der Parameter als adVarWChar übergeben erfolgt die Konvertierung erst im ODBCTreiber, da der MSDASQL einen Unicode-String weitergibt.
Ähnliches gilt auch bei der Verwendung des IBMDASQL an Stelle des ODBC-Treibers.

Franz.Rung
10-09-14, 11:10
Vielen Dank denke das ist der Ansatz den ich verstehe - habe dem MS-Programm "abgewöhnt" diese Korrektur zu m achen

Gruss
Franz