-
vb6 ADODB.Connection Latin 2 DB
Hallo zusammen,
ich stehe wieder mal vor einem Problem.
Ich muss mit einem PC-Programm (VB6) Druckdaten aus einer Datei lesen.
Das Lesen erfolgt mit SQL und die DB hat die CCSID 1153 (Latin2 Zeichensatz).
Wenn ich mir eine 5250-Sitzung mit den entsprechenden Parametern einrichte und per SQL in die DB sehe, passt alles.
Mit DSPPFM und der Datei passt auch der Hexwert der Zeichen.
Wenn ich mir die Daten in meinem PC-Programm im Debug ansehe, werden div. Zeichen nicht richtig übermittelt.
Anbei noch der Connectionstring:
Code:
cnAS400.Open "Provider=IBMDA400;Data Source=" + strAS400Server + ";User ID='" + strUser + "';Password='" + strPassword + "'" + ";Trace=1;Force Translate=1;", "", ""
Kennt jemand eine Möglichkeit, wie ich die Daten in mein Programm richtig eingelesen bekomme?
Wie kann ich ggf. die CCSID der Connection verändern?
Ich habe bereits versucht mit CHGJOB die 1153 dem JOB zu zuteilen.
Das Ergebnis bleibt weiterhin "falsch".
Ich vermute das es an der Verbindung zwischen PC und der 400 liegt.
Bin für jeden Hinweis/Ansatz dankbar =)
-
Wenn ich mit einem anderem Programm z.B. SQL-Workbench mir die Daten anzeigen lasse, sehen die auch gut aus.
-
In diesem Fall liegt es nur bedingt an der AS/400 sondern auch an Windows.
Wie ist die System-CCSID der AS/400 bzw. die Sprach-Id des ODBC-Users?
SBCS-Daten werden zuerst in die SBCS-CCSID des ODBC-Jobs gewandelt.
Anschließend erfolgt die Umwandlung von SBCS-EBCDIC in SBCS-ANSI.
Läuft dein PC auf deutsch 1252 hast du hier bereits dein 2. Problem.
VB6/VBA usw. speichern Strings aber als Unicode.
Also ist einzig und allein Unicode (UCS2) hier die Lösung:
select cast(myfield as [var]graphic(nn) ccsid 13488) as myfieldname, ...
select cast(myfield as N[var]CHAR(nn) ) as myfieldname, ...
In beiden Fällen erhältst du direkt Unicode in deinem VB6-Recordset.
Wichtig bei Abfragen mit Parametern ist auch hier die Definition der Parameter als adWChar/advarWChar!
-
Die Jobinfoirmation nach dem Verbinden des Programms lauten:
Controljob:
Sprachen-ID . . . . . . . . . . . . . . . . . . . : DEU
Landes- oder Regions-ID . . . . . . . . . . . . . : DE
ID des codierten Zeichensatzes (CCSID) . . . . . : 273
Standard-ID des codierten Zeichensatzes . . . . . : 273
und Datajob:
Sprachen-ID . . . . . . . . . . . . . . . . . . . : DEU
Landes- oder Regions-ID . . . . . . . . . . . . . : DE
ID des codierten Zeichensatzes (CCSID) . . . . . : 273
Standard-ID des codierten Zeichensatzes . . . . . : 273
Mein PC läuft (wie schon vermutet) auf Deutsch.
Dann werde ich mir deinen Select mal ansehen und gucken, ob ich das in mein VB6 Programm entsprechend implementiert bekomme.
-
Also bei der CCSID 13488 wirft er mit den SQL0189 an den Kopf
-
Bist du sicher VARGRAPHIC genommen zu haben?
Nur dann ist 13488 erlaubt!
-
Hast Recht.
Das DB-Feld ist ein Char Feld.
Da muss ich doch das zweite Beispiel verwenden.
Oder?
select cast(FDFL04 as CHAR(50) CCSID 1153)
Bin mir mit der CCSID nicht sicher, was i da verwenden soll/darf/muss
1153 auf jedenfall nicht
-
Immer noch falsch:
select cast(FDFL04 as GRAPHIC(50) CCSID 13488) as FDFL04 ...
Ist die Tabelle/Datei tatsächlich CCSID 1153?
Noch mal der Weg bei SBCS:
DB CCSID 1153 -> Job CCSID 273 -> PC Codepage 1252 -> VB-String (Unicode)
Der Weg bei Unicode (UCS2):
DB CCSID 1153 -> SQL Cast UCS2 -> VB-String (Unicode)
Nun hast du nur noch ein kleines Problem:
a) im VB-Debugger wird der Inhalt nur mit einem SBCS-Font angezeigt, was zu Verlusten der Darstellung führt.
b) Steuerelemente in Formularen haben den Default-Font "MS Sans Serif". Auch dieser ist kein Unicodefont. Ändere hier den Font auf z.B. Tahoma oder Verdana, dann wird Unicode auch korrekt dargestellt.
-
Nachtrag:
Viele Standard-VB6-Steuerelemente sind auch nicht Unicodefähig!
Bei der Zuweisung der Text/Caption-Eigenschaft geht der Unicode dann auch wieder verloren.
Du benötigst da also ggf. unicodefähige Steuerelemente (gibt's zu hauf kostenpflichtig).
-
Genau da lag mein Problem.
Die Darstellung war die ganze Zeit eine falsche.
Habe mir dann einen Output in eine Textdatei geben lassen.
Ebenfalls falsch.
Nun habe ich einfach mal die Daten an meine Druckkomponente geschickt und die Daten werden nun sauber richtig angezeigt und gedruckt.
Komischerweise klappt das ganze auch ohne das ich irgendwelche Zeichen mit Cast bearbeiten musste.
Ich habe sämtliche Zeichen nun durchgetestet und es sieht gut aus.
Vielen Dank für die Unterstützung
Similar Threads
-
By Mr-Ferret in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 28-02-14, 10:35
-
By camouflage in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 03-02-14, 09:45
-
By Jutta in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 01-10-02, 09:20
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