Announcement

Collapse
No announcement yet.

Paradox - Umlaute - anderen LANGDRIVER beim Öffnen erzwingen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Paradox - Umlaute - anderen LANGDRIVER beim Öffnen erzwingen?

    Hallo liebe Community,

    ich habe mal wieder ein Problem mit Paradox bei dem mir Google bisher nicht helfen konnte.
    Das Problem:
    Wir benutzen eine Anwendung auf Basis einer Paradox-Datenbank.
    Beim Laden der Daten in eine SQL-Datenbank (sowie auch beim Laden mit anderen Tools, wie Excel, QlikView etc.) werden die Umlaute falsch dargestellt.

    Bisher haben wir die Umlaute mit Referenztabellen übersetzt, was aber keine sonderlich tolle Möglichkeit ist, da wir immer wieder Sonderzeichen finden, welche bisher nicht dabei sind (z.B. ş) und die Anweisungen zum Ersetzen dann immer länger werden, z.B. REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(RE PLACE(<Spaltenname>,"õ","ä"),"▀","ß"),"³","ü"),"÷" ,"ö"),"▄","Ü"),"─","Ä"),"Í","Ö") für SSIS.
    Dazu kommt noch, dass man erst noch die Spalten finden muss, auf welche dieses REPLACE anzuwenden ist und es ist auch recht umständlich, dass dann immer überall mit reinzukopieren.

    Nun fiel mir auf, dass Paradox 7 die Tabelle korrekt darstellt. Das müsste doch auch per ODBC bzw. OLE DB (Microsoft Jet 4.0) möglich sein.
    Ich wurde dann auf die "LANGDRIVER"-Option aufmerksam und habe versucht, diese in meiner BDE-Konfiguration (Konfiguration/Treiber/Native/Paradox und Konfiguration/System/INIT) auf 'WEurope' ANSI umzustellen, was aber keine Änderungen brachte. (Immernoch falsche Umlaute per OLE DB und korrekte Darstellung in Paradox 7)
    Gemäß http://entwickler-forum.de/showthrea...-ADODB-mit-BDE habe ich in der Tabelle selbst ist "Pdox ANSI Intl." als Sprachtreiber angegeben, wenn ich die Tabelle umstrukturiere und den Sprachtreiber auf 'WEurope' ANSI umstelle, dann kann ich die Tabelle ordentlich über OLE DB lesen, aber das umstrukturieren lässt sich schlecht automatisieren (das Paradox Fenster bleibt öffen, man bekommt keine Rückmeldung, wann das Skript fertig ist) und kostet auch viel Zeit (30Minuten für eine 700MB Tabelle, insgesamt wären es aber viel mehr Tabellen).

    Bei meiner Suche habe ich folgendes gefunden: http://www.delphipraxis.net/22671-bd...-per-code.html. Dort wurde für Delphi folgende Lösung gefunden:
    in meiner Klasse TDatabase habe ich der Eigenschaft Params den String:
    /KONFIGURATION/SYSTEM/INIT/LANGDRIVER=Paradox 'intl'
    zugefügt und nun interessiert es nicht mehr was in der BDE (idapi32.cfg)
    für ein Sprachtreiber angegeben ist !!!!
    Jetzt hoffe ich, dass ich diese Einstellung vielleicht auch irgendwie über den ConnectionString oder irgendwie anders übergeben kann, doch habe ich keine Ahnung, wie.

    Was könnte ich sonst noch versuchen?

    Vielen Dank für's Lesen und natürlich für eventuelle Antworten ;-)

  • #2
    Ist sichergestellt, dass Deine Versuche den vollen Datenumfang abbilden? Oder hast Du nur ein Fenster (einige Spalten / Zeilen, ein Import Set) gefunden, das gut aussieht?

    Wenn ich das richtig verstanden hab, wird das in ein richtiges RDBMS importiert. Welches?
    Diese Systeme bieten idR auch eine Reihe von Charset Conversion Funktionen, die ggF. pauschal beim Import genutzt werden könnten.
    Gruß, defo

    Comment


    • #3
      Hallo defo,

      ich habe mich bei meinen Versuchen nur auf eine ADRESSEN.DB beschränkt, da sind viele "Stra▀en" drinne und auch M³llers. Man sieht beim Öffnen mit den SQL Server Data Tools oder Excel sofort an den vielen schwarzen Klötzchen, dass die Tabelle falsch interpretiert wurde.
      Im Gegensatz dazu habe ich dann beim Öffnen in Paradox 7 bzw. beim Öffnen der konvertierten Tabelle korrekte Umlaute und ß vorgefunden, bei den selben Zeilen, die sonst fehlerhaft dargestellt werden.

      Mit den SQL Server Integration Services will ich die Paradox-Tabellen in eine SQL Datenbank laden. Meine Tests mache ich mit der Developer-Edition von SQL 2012 mit SP1, produktiv könnte es im schlimmsten Fall auf einem SQL 2005 Server laufen.
      Ich hab da grade mal in den Integration Services rumprobiert, aber ich bekomme da nur "Truncation-Error"-Meldungen, was ich mir gar nicht erklären kann, da ich die Zielfelder immer länger gemacht hab, als die Quellfelder.
      Sonst hab ich nur "COLLATE" gefunden, aber die Collation bezieht sich meines Wissens nur auf Vergleiche/Sortierreihenfolge.

      Die Daten werden auch direkt als Unicode gelesen, also müsste ich wohl erst nach varchar konvertieren und dann die codepage ändern?
      weißt du zufällig wie?

      Gruß
      THW

      Comment

      Working...
      X