-
Eurozeichen per SQL
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.
Ich versuche z.B. folgenden SQL zu übertragen
Code:
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!
-
Stell doch mal Deine Datenbank-Datei auf CCSID 1141 um und probier's dann nochmal.
Gruß,
KM
-
ODBC Datenquelle konfigurieren
Hallo,
benutzt du CA Express als ODBC Datenquelle? Wenn ja, dann setze mal das Häkchen im Reiter 'Umsetzung'!
-
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.
-
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!
-
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-sys...d-65535-a.html
-
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
-
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!
-
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 ?
 Zitat von Fuerchau
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.
-
 Zitat von beegee
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:
Code:
WRKACTJOB SBS(QUSRWRK) JOB(QZDASOINIT)
-
Tja, dachte ich auch - aber diese Jobs haben alle CCSID 1141 und trotzdem habe ich in meiner Java-Anwendung nur das Sonnensymbol und nicht das Eurozeichen.
-
Die Darstellung des Eurozeichens ist AS/400-spezifisch, in UNICODE (Java, Windows) belegt es eine andere Stelle und muss daher leider selber gemappt werden.
Korrekt funktionierts wahrscheinlich nur, wenn auch die AS/400-Datei in UCS2 (CCSID 13488) steht.
Similar Threads
-
By svente in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 23-01-07, 09:49
-
By steven_r in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 25-09-06, 08:22
-
By steven_r in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 18-07-06, 09:36
-
By Nennewitz in forum NEWSboard Programmierung
Antworten: 16
Letzter Beitrag: 28-06-06, 13:49
-
By steven_r in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 08-05-06, 12:40
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks