[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2005
    Beiträge
    90

    Question 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 =)

  2. #2
    Registriert seit
    Jan 2005
    Beiträge
    90
    Wenn ich mit einem anderem Programm z.B. SQL-Workbench mir die Daten anzeigen lasse, sehen die auch gut aus.

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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!
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Jan 2005
    Beiträge
    90
    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.

  5. #5
    Registriert seit
    Jan 2005
    Beiträge
    90
    Also bei der CCSID 13488 wirft er mit den SQL0189 an den Kopf

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Bist du sicher VARGRAPHIC genommen zu haben?
    Nur dann ist 13488 erlaubt!
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Jan 2005
    Beiträge
    90
    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

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Jan 2005
    Beiträge
    90
    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

  1. Telnet connection dauert extrem lange
    By Mr-Ferret in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 28-02-14, 10:35
  2. RDi 9.01 Fehler Connection
    By camouflage in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 03-02-14, 09:45
  3. Wireless Connection
    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
  •