[Gelöst]Sonderzeichenproblem beim Export per FILE

23. April 2009 09:56

Hallo Community,

ich stekce gerade etwas fest. Meine Aufgabe ist es, Daten aus einer Access-Datenbank einzulesen, diese Daten mit vorhandenen Daten in einer Tabelle zu vergleichen, gefundenen Datensätze mit den Daten aus der Access-DB zu modifizieren und das, was nicht passt, in eine Datei zu sichern. Bei der Tabelle handelt es sich um die "Item Cross Reference", die ich um eine paar Textfelder erweitert habe, damit die Daten für unsere Etiketten dort aufgenommen werden - bisher waren die separat in der Access-DB untergebracht, was den Wartungsaufwand doch immens erhöht :wink:

Nachdem ich wieder festegestellt habe, dass so ein Import nicht ohne ist, habe ich in der Abfrage alles in Text umgewandelt:
Code:
       strSQL := 'SELECT CStr([Artikel_Nr]) AS Art_Nr, CStr([Artikel_Nr_Kunde]) AS ArtNrKd,';
       strSQL := strSQL + ' CStr([Bezeichnung1]) AS Bez1, CStr([Bezeichnung2]) AS Bez2,';
       strSQL := strSQL + ' CStr([Bezeichnung3]) AS Bez3, CStr([Farbe]) AS Color,';
       strSQL := strSQL + ' CStr([Zusatztext]) AS Zusatz, CStr([EAN_Code]) AS EAN, CStr([Etikettenbeschreibung]) AS Etikett';
       strSQL := strSQL + ' FROM ' + parTabName;


Die Datei zum sichern der Datensätze, die ich nicht direkt übernehmen kann, sieht so aus:

Code:

       IF NOT FILE.EXISTS(FileName) THEN
         F1.CREATE(FileName);

       F1.WRITEMODE(TRUE);
       F1.TEXTMODE(TRUE);
       F1.OPEN(FileName);
.....


           CLEAR(Line);
           //Erste Exportzeile: Überschriften
           IF FehlerZaehler = 0 THEN BEGIN
             FOR i := 0 TO (ADOrs.Fields.Count - 1) DO BEGIN
               Line := Line + ADOrs.Fields.Item(i).Name;
               IF i < (ADOrs.Fields.Count - 1) THEN
                 Line := Line + ';'
             END;
             F1.WRITE(Line);
           END;
           //Datenzeilen
           Line := '';
           FOR i := 0 TO (ADOrs.Fields.Count - 1) DO BEGIN
             FLD_str := ADOrs.Fields.Item(i).Value;
             Line := Line + FLD_str;
             IF i < (ADOrs.Fields.Count - 1) THEN
               Line := Line + ';'
           END;
           F1.WRITE(Line);
           FehlerZaehler := FehlerZaehler + 1;
         END;



Das gibt mir eine hübsche Datei, die mit Excel gut einlesbar ist - nur wird kein ä,ö,ü etc. in dieser Datei richtig angezeigt. Im Debugger und den Variablen steht das richtige drin, aber das Ergebnis .... z.B. so: "Dosa f”r u-liggande"

Wie bekomme ich das hin, das die Sonderzeichen in der Datei ebenfalls richtig ausgegeben werden? Die Suche hat mich hier nicht wirklich weitergebracht :-?
Zuletzt geändert von CaddyM am 23. April 2009 10:19, insgesamt 1-mal geändert.

Re: Sonderzeichenproblem beim Export per FILE

23. April 2009 10:19

Ok, hat sich bereits erledigt - ich hab 2 Funktionen entdeckt die das lösen:

Code:

Ansi2Ascii(_String : Text[250]) _Output : Text[250]
// Converts from ANSI to ASCII

EXIT(CONVERTSTR(_String,'óÚÔõÓÕþÛÙÞ´¯ý’µã¶÷ž¹¨ Íœ°úÏÎâßݾ·±Ð¬‡Š«Œ‹“”‘–—¤•ËÈÊš›™',
                        'ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®ÁÂÀÊËÈÍÎÏÌÓßÔÒÚÛÙ'));

Ascii2Ansi(_String : Text[1024]) : Text[1024]
// Converts from ASCII to ANSI

EXIT(CONVERTSTR(_String,'ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®ÁÂÀÊËÈÍÎÏÌÓßÔÒÚÛÙ',
                        'óÚÔõÓÕþÛÙÞ´¯ý’µã¶÷ž¹¨ Íœ°úÏÎâßݾ·±Ð¬‡Š«Œ‹“”‘–—¤•ËÈÊš›™'));



Somit : gelöst

Re: [Gelöst]Sonderzeichenproblem beim Export per FILE

23. April 2009 11:56

der Vollständigkeithalber, die erwähnten funktionen finden sich in der CU 11501 und sind (in DACH) Standard ab 4 glaub ich.
in dem Zusammenhang,
ich benötige so eine Übersetzung auch in IT und FRA hat da jemand sowas? in den Versionen gib's leider keine entsprechende CU.