PDA

View Full Version : Eurozeichen per SQL



Seiten : [1] 2 3 4 5

plinzen
19-04-07, 09:52
Hallo zusammen,

ich versuche gerade mittels der SQL-Anweisung INSERT und dem ClientAccess ODBC-Treiber Daten von Excel auf die iSeries zu übertragen. Programmiert wurde das ganze mit einem Makro. Das Ganze funktioniert auch ganz gut, lediglich mit dem Eurozeichen und vermutlich auch anderen Sonderzeichen hapert es gewaltig. :confused:

Ich versuche z.B. folgenden SQL zu übertragen

insert into daarst (arnrrs, arbzrs) values ('TEST', 'Test € Test')

In der Datenbank wird dann anstatt dem Eurozeichen ein "grüner Balken" angezeigt.

Führe ich den gleichen SQL in einer CA-Sitzung (Hostcodepage 1141) aus, dann funktioniert mein SQL, d.h. es wird das EURO-Zeichen korrekt dargestellt.

Die CCSID der Datenbankdatei ist 273.

Hab ich hier irgendwas bei der ODBC-Verbindung falsch eingestellt? Oder hat sonst jemand eine Idee wo der Hund begraben sein könnte?
Vielen Dank!

KM
19-04-07, 11:17
Stell doch mal Deine Datenbank-Datei auf CCSID 1141 um und probier's dann nochmal.

Gruß,
KM

Dominik Meyer
19-04-07, 11:26
Hallo,

benutzt du CA Express als ODBC Datenquelle? Wenn ja, dann setze mal das Häkchen im Reiter 'Umsetzung'!

Fuerchau
19-04-07, 11:31
Datenbank-CCSID ist da leider nicht ausreichend sondern die JOB-CCSID des SQL-Server-Jobs, und die stammt aus QCCSID, da leider eine JOBD keinen CCSID-Wert kennt !

Zur Erklärung:

Der SQL-String wird in der CCSID des Serverjobs verarbeitet, die Daten extrahiert, als JOB-CCSID-konform interpretiert und anschließend in die DB-CCSID umgewandelt.
Arbeitet nun das System mit QCCSID=65535 kann man sich nun ausdenken, was passiert.

Notfalls kann man sich auch damit behelfen, dass der gesamte SQL als UNICODE übertragen wird (ODBC-Konfiguration).
Das habe ich allerdings noch nicht ausprobiert.

plinzen
20-04-07, 07:17
Danke erstmal,

Als Systemwert für QCCSID war tatsächlich 65535 eingetragen. Den Wert habe ich auf unserem Testsystem jetzt mal geändert. Jetzt funktioniert mein SQL auch.
Das Umstellen des Systemwertes für die QCCSID würde funktionieren.

Jetzt habe ich nur noch die Frage(n): Kann irgendwas schief gehen, wenn ich diesen Wert einfach ändere? Auf was muss ich achten?

Danke!

Fuerchau
20-04-07, 07:39
Nun ja, schief gehen kann da so einiges, aber das hängt von der jeweiligen Anwendung ab.

So lange alle Clients auf der Hostcodepage 273/1141 stehen wirst du wohl kaum Probleme haben.

Hast du mehrere Sprachen im Einsatz, insbesonders Osteuropa, fangen deine Problem erst an.

Sieh auchfolgenden Beitrag:
http://www.newsolutions.de/forum-systemi-as400-i5-iseries/system-i-hauptforum/12068-ccsid-65535-a.html

KM
20-04-07, 07:45
Da kann ich mich Fuerchau nur anschließen. Innerhalb einer CCSID dürfte es keine Probleme geben. Sobald Du aber auch andere Sprachräume benutzt und z.B. manche Zeichen einer CCSID in einer anderen CCSID nicht vorkommen, wirst Du Probleme bekommen. Ich würde also nur umstellen, wenn Du nur eine CCSID verwendest.

Gruß,
KM

plinzen
20-04-07, 08:05
OK, nachdem unser System nur in Deutschland eingesetzt wird und auch keine weiteren Sprachen außer Deutsch verwendet werden, dürfte es hoffentlich keine Probleme machen.

Ich werde den Systemwert auf dem Testsystem mal auf 1141 belassen und die nächsten paar Wochen auf eventuell auftretende Fehler achten.

Vielen Dank!

beegee
03-11-10, 09:48
Müsste nicht auch funktionieren, wenn man die CCSID des SQL-Serverjobs auf 1141 stellt ?
Weiß wer, wie der SQL-Serverjob auf der iSeries heisst, bzw. wie man den im WRKACTJOB findet ?



Datenbank-CCSID ist da leider nicht ausreichend sondern die JOB-CCSID des SQL-Server-Jobs, und die stammt aus QCCSID, da leider eine JOBD keinen CCSID-Wert kennt !

Zur Erklärung:

Der SQL-String wird in der CCSID des Serverjobs verarbeitet, die Daten extrahiert, als JOB-CCSID-konform interpretiert und anschließend in die DB-CCSID umgewandelt.
Arbeitet nun das System mit QCCSID=65535 kann man sich nun ausdenken, was passiert.

Notfalls kann man sich auch damit behelfen, dass der gesamte SQL als UNICODE übertragen wird (ODBC-Konfiguration).
Das habe ich allerdings noch nicht ausprobiert.

andreaspr@aon.at
03-11-10, 09:53
Müsste nicht auch funktionieren, wenn man die CCSID des SQL-Serverjobs auf 1141 stellt ?
Weiß wer, wie der SQL-Serverjob auf der iSeries heisst, bzw. wie man den im WRKACTJOB findet ?

Wenn du z.B. mit ODBC auf die Datenbank zugreifst ist das das Subsystem QUSRWRK und die Jobs QZDASOINIT:

WRKACTJOB SBS(QUSRWRK) JOB(QZDASOINIT)