[NEWSboard IBMi Forum]
Seite 4 von 5 Erste ... 3 4 5 Letzte
  1. #37
    Registriert seit
    Mar 2010
    Beiträge
    19
    Code:
    CREATE TABLE VSART
    (
      DATE_CRE TIMESTAMP,
      DATE_UPD TIMESTAMP,
      D_LEISTER VARCHAR(12),
      NAME VARCHAR(50),
      TXT VARCHAR(254),
      USER_CRE VARCHAR(10),
      USER_UPD VARCHAR(10),
      VERKEHRZWG VARCHAR(1),
      VERKEHRZWG2 VARCHAR(2),
      VERKEHRZWG_INL VARCHAR(1),
      VERKEHRZWG_INLE VARCHAR(1),
      VERSANDART VARCHAR(3) NOT NULL,
      MANDANT INTEGER  DEFAULT 0
    ) CCSID 1252;
    Wir haben nun versucht eine Tabelle anzulegen, die die korrekte Codepage hat. Leider geht das nicht, da der Token bzw. der Bezeichner hinter CCSID nicht erkannt wird.

    SELECT character_set_name from sysibm.syscharsets
    zeigt keine der Codepages an, die wir auf Windowsseite haben.

  2. #38
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das stimmt.
    Auf der AS/400 sind nur Codepages der AS/400.
    Also z.B. 273 für Deutsch, 037 für Englisch usw.

    Eigentlich ist die Syntax:

    CREATE TABLE VSART
    (
    DATE_CRE TIMESTAMP,
    DATE_UPD TIMESTAMP,
    D_LEISTER VARCHAR(12) CCSID 273,
    NAME VARCHAR(50) CCSID 273,
    TXT VARCHAR(254) CCSID 273,
    USER_CRE VARCHAR(10) CCSID 273,
    USER_UPD VARCHAR(10) CCSID 273,
    VERKEHRZWG VARCHAR(1) CCSID 273,
    VERKEHRZWG2 VARCHAR(2) CCSID 273,
    VERKEHRZWG_INL VARCHAR(1) CCSID 273,
    VERKEHRZWG_INLE VARCHAR(1) CCSID 273,
    VERSANDART VARCHAR(3) CCSID 273 NOT NULL,
    MANDANT INTEGER DEFAULT 0
    )

    Wobei SQL-Tables per Default IMMER die CCSID des Jobs (ggf. die Default-CCSID aus Language) bekommen.

    *HEX muss explizit angegeben werden bzw. ergibt sich aus dem Typ BINARY.

    Alternativ wäre da noch Unicode:

    MYFIELD [var]GRAPHIC(nn) CCSID 13488
    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

  3. #39
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Falls du immer noch nicht weitergekommen bist, könntest du auch ein DB-Monitoring starten. Dort siehst du dann wie der Wert der Where-Klausel auf der Seite der DB2 aussieht, nachdem er via ODBC übertragen wurde.

  4. #40
    Registriert seit
    Mar 2010
    Beiträge
    19
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Falls du immer noch nicht weitergekommen bist, könntest du auch ein DB-Monitoring starten. Dort siehst du dann wie der Wert der Where-Klausel auf der Seite der DB2 aussieht, nachdem er via ODBC übertragen wurde.
    Zunächstmal weiss ich natürlich nicht, wie ein DB-Monitoring zu starten ist, aber ich kann das an meinen Kunden weitergeben.

    Problem ist nur, dass die DB2 ja gar keine Datei im Zugriff hat, da der Select ja gar nicht ausgeführt wird.

    Wir haben das im ODBC Treiber tracen lassen und dort ist der Select schon kaputt. Nicht klar ist, ob dieser Trace vor oder nachdem Übertragen zu iSeries getraced wird.

    Was ich etwas komisch finde ist, dass die Umlaute in den Feldinhalten ja korrekt angezeigt werden.

    Also ein SELECT * FROM TABELLE zeigt die Umlaute. Ein INSERT oder UPDATE geht. NUR wenn der Umlaut in der WHERE CLAUSE ist, geht es nicht.
    Egal bei welcher Tabelle.

    Ich habe mit unserer Applikation getestet und mit einem SQL Tool. Ich bin dabei das noch mit TOAD auszuprobieren.

  5. #41
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von chs Beitrag anzeigen
    Zunächstmal weiss ich natürlich nicht, wie ein DB-Monitoring zu starten ist, aber ich kann das an meinen Kunden weitergeben.
    iSeries Navigator -> Datenbanken -> DB auswählen -> SQL Performance Monitors -> Rechts Klick -> Neu -> ...
    Monitor-Name + Lib angeben ->
    Aktueller Benutzer = der User mit dem du dich via ODBC anmelden möchtest
    Jobbenutzer = QUSER?
    usw.
    Nach Fertig stellen, ist der Monitor automatisch gestartet -> dann machst du deine Abfrage mit dem Umlaut -> dann beendest du den Monitor -> rechts Klick auf den Monitor -> Analysieren -> Kaffee machen gehen -> rechts Klick auf SQL Statements -> Zusammenfassung -> there it is.

  6. #42
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... nochmal:
    das Problem ist nicht der Inhalt der Datei und dessen Umsetzung!!!!
    Das Problem ist der SQL String, der da an die Datenbank geschickt wird!!!
    Habt ihr mal andere Umlaute probiert? also z.B. Rhöndorf, Gießen, Härne?

    D*B

    Zitat Zitat von chs Beitrag anzeigen
    Zunächstmal weiss ich natürlich nicht, wie ein DB-Monitoring zu starten ist, aber ich kann das an meinen Kunden weitergeben.

    Problem ist nur, dass die DB2 ja gar keine Datei im Zugriff hat, da der Select ja gar nicht ausgeführt wird.

    Wir haben das im ODBC Treiber tracen lassen und dort ist der Select schon kaputt. Nicht klar ist, ob dieser Trace vor oder nachdem Übertragen zu iSeries getraced wird.

    Was ich etwas komisch finde ist, dass die Umlaute in den Feldinhalten ja korrekt angezeigt werden.

    Also ein SELECT * FROM TABELLE zeigt die Umlaute. Ein INSERT oder UPDATE geht. NUR wenn der Umlaut in der WHERE CLAUSE ist, geht es nicht.
    Egal bei welcher Tabelle.

    Ich habe mit unserer Applikation getestet und mit einem SQL Tool. Ich bin dabei das noch mit TOAD auszuprobieren.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #43
    Registriert seit
    Jul 2005
    Beiträge
    1.053
    Zitat Zitat von BenderD Beitrag anzeigen
    ... nochmal:
    das Problem ist nicht der Inhalt der Datei und dessen Umsetzung!!!!
    Das Problem ist der SQL String, der da an die Datenbank geschickt wird!!!
    Habt ihr mal andere Umlaute probiert? also z.B. Rhöndorf, Gießen, Härne?

    D*B
    Also mal wieder auf der Seite Windoofs.

    Ein Bug im Win ODBC

    kann man da nicht auch einen anderen ODBC fähige Schnitstelle verwenden - oder geht das nicht ?

    Gruß AS400.lehrling

  8. #44
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... nix Windows, der Client Verhexler ODBC Treiber, oder die AS/400 Datenbank, oder auch beides hat einen Schuss.

    D*B

    Zitat Zitat von AS400.lehrling Beitrag anzeigen
    Also mal wieder auf der Seite Windoofs.

    Ein Bug im Win ODBC

    kann man da nicht auch einen anderen ODBC fähige Schnitstelle verwenden - oder geht das nicht ?

    Gruß AS400.lehrling
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #45
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Sieht mir ganz nach einem Fehler in der ODBC-Schnittstelle aus.
    Für die ODBC-Routinen gibt es immer ein A-Version und eine W-Version.

    Welche verwendet wird, hängt von einer C++-Compiler-Option ab, ob man Singlebyte oder Multibyte (UNICODE) verwendet.

    Bei der Verwendung von UNICODE scheint es bei dir zu einem Umsetzungsproblem von Multibyte zu Single- oder Widecharacter zu kommen, was ggf. implizit durch den Compiler verursacht wird.

    Dies macht nicht der ODBC-Treiber selber !

    Die Umsetzungsroutine von Multibyte nach Singlebyte scheint nicht mit der richtigen Lokale zu arbeiten, so dass hier eben Schrott rauskommt und aus 'Nürnberg' eben 'N\ffrnberg' wird.

    Versuche mal deine SQL's nicht mit TCHAR (was automatisch 1/2-Byte je nach Compiler-Option ist) sondern mit char[nn] aufzubauen.
    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. #46
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... das ist höchstens einen Teil des Problems (wenn es denn so sei). Wenn eine Applikation, welche auch immer einen String 'select * from blablabla where ort = N\ffrnberg' an den ODBC Treiber übergibt, dann hat dieser das so an die Datenbank zu senden und wenn es denn keinen Satz mit diesem Ort gibt, dann hat selbige einen SQLCODE von 100 zurückzuschicken.

    D*B
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Sieht mir ganz nach einem Fehler in der ODBC-Schnittstelle aus.
    Für die ODBC-Routinen gibt es immer ein A-Version und eine W-Version.

    Welche verwendet wird, hängt von einer C++-Compiler-Option ab, ob man Singlebyte oder Multibyte (UNICODE) verwendet.

    Bei der Verwendung von UNICODE scheint es bei dir zu einem Umsetzungsproblem von Multibyte zu Single- oder Widecharacter zu kommen, was ggf. implizit durch den Compiler verursacht wird.

    Dies macht nicht der ODBC-Treiber selber !

    Die Umsetzungsroutine von Multibyte nach Singlebyte scheint nicht mit der richtigen Lokale zu arbeiten, so dass hier eben Schrott rauskommt und aus 'Nürnberg' eben 'N\ffrnberg' wird.

    Versuche mal deine SQL's nicht mit TCHAR (was automatisch 1/2-Byte je nach Compiler-Option ist) sondern mit char[nn] aufzubauen.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #47
    Registriert seit
    Mar 2010
    Beiträge
    19
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Das stimmt.
    Auf der AS/400 sind nur Codepages der AS/400.
    Also z.B. 273 für Deutsch, 037 für Englisch usw.
    Hm. Wie kann dann aber die AS/400 meine lokale Codepage korrekt übersetzen?

    Irgendwie hatte ich verstanden es gibt einen Connect Server, der meine Codepage übersetzt in die der DB und dann den Select weiterreicht (laienhafte nicht AS/400 Typ Erklärung).

    Siehe auch Understanding DB2 Universal Database character conversion

  12. #48
    Registriert seit
    Jul 2005
    Beiträge
    1.053
    Hab ja keine ahnung aber könnte utf16 nicht die Lösung sein ?

    Gruß AS400.lehrling

Similar Threads

  1. Antworten: 9
    Letzter Beitrag: 16-03-09, 15:25
  2. CPYFRMSTMF Umlaute
    By helm in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 24-07-08, 12:09
  3. Druckproblem bei Umlauten und Eurozeichen
    By Bitverdreher in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 30-06-08, 09:23
  4. Datei aus IFS mit falschen Umlauten
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 06-12-07, 15:35
  5. Umsetzung von Umlauten
    By DEVJO in forum IBM i Hauptforum
    Antworten: 12
    Letzter Beitrag: 24-03-05, 11:29

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •