[Gelöst] Umlaute in Report bei Textausgabe

Bild Microsoft Dynamics NAV 3.xx
(ehem. Navision Attain)

[Gelöst] Umlaute in Report bei Textausgabe

Beitragvon andyypsilon » 27. Oktober 2008 11:12

Hallo,

ich habe zum Thema Umlaute hier schon einiges finden können, nur bezieht sich dabei alles auf Dataports.

Wenn ich mit meinem Report eine Datei ausgeben möchte, so wird diese im ASCII Format ausgeben, so dass ich eine Konvertierung ins ANSI Format vornehmen muß. Ich habe auch schon die Codeunits vom Timo Lässer gefunden (Nav Tools)

Leider fehlt mir im Moment noch das Wissen, wie ich zum einen diese Funktiionen in meinen Report einbauen kann und vor allem wo. Ich habe in einem Dataport von unserem Partner etwas gefunden und habe versucht das ganze in meinem Report umzusetzen, jedoch ohne Erfolg.

Für Schläge auf den Hinterkopf bin ich wie immer dankbar.

Gruß

and.Y

PS: Anbei der Code des Reports. Im Anhang Details.zip befinden sich Bilder der Parametrisierung.


Code: Alles auswählen
SalesSetup.GET;
SchreibString := ASCII2ANSI(SchreibString);

OnAfterGetRecord()
Filename := SalesSetup."UPS Path+File";
SchreibString := ASCII2ANSI(SchreibString);

Datei.TEXTMODE(TRUE);
Datei.WRITEMODE(TRUE);

IF Datei.OPEN(Filename) THEN BEGIN
  Datei.SEEK(Datei.LEN);
  Datei.TRUNC;
END ELSE
  Datei.CREATE(Filename);

SchreibString := DELCHR("Sales Invoice Header"."No.",'<>') + ';' +
                 DELCHR("Sales Invoice Header"."Sell-to Customer No.",'<>') + ';' +
                 DELCHR("Sales Invoice Header"."Ship-to Name",'<>') + ';' +
                 DELCHR("Sales Invoice Header"."Ship-to Name 2",'<>') + ';';

// Abfrage Lieferadresse vorhanden

IF DELCHR("Sales Invoice Header"."Ship-to Address") <> '' THEN
  SchreibString := SchreibString + DELCHR("Sales Invoice Header"."Ship-to Address",'<>') + ';'
ELSE
  SchreibString := SchreibString + DELCHR("Sales Invoice Header"."Ship-to Address 2",'<>') + ';';

//Abfrage Ländercode gefüllt

IF "Sales Invoice Header"."Ship-to Country Code" = '' THEN
  SchreibString := SchreibString + 'DE' + ';'
ELSE
  SchreibString := SchreibString + DELCHR("Sales Invoice Header"."Ship-to Country Code",'<>') + ';';


SchreibString := SchreibString + DELCHR("Sales Invoice Header"."Ship-to Post Code",'<>') + ';' +
                                 DELCHR("Sales Invoice Header"."Ship-to City",'<>') + ';' +
                                 DELCHR("Sales Invoice Header"."Sell-to Phone No.",'<>') + ';' +
                                 DELCHR("Sales Invoice Header"."Sell-to E-Mail",'<>') + ';' +
                                 DELCHR("Sales Invoice Header"."Shipment Method Code",'<>') + ';';

//Abfrage nach Nachnahmelieferung

IF "Sales Invoice Header"."Shipment Method Code" = 'NACH' THEN
   SchreibString := SchreibString + 'Y' + ';' + 'COD' + ';' + 'N'
ELSE
   SchreibString := SchreibString + 'N';

SchreibString := SchreibString + DELCHR("Sales Invoice Header"."Currency Code",'<>') + ';';

//Abfrage nach Währung

IF "Sales Invoice Header"."Currency Code" = '' THEN
    SchreibString := SchreibString + 'EUR' + ';'
ELSE
    SchreibString := SchreibString + DELCHR("Sales Invoice Header"."Currency Code",'<>') + ';';

                   
"Sales Invoice Header".CALCFIELDS("Amount Including VAT");
SchreibStringdec := FORMAT("Sales Invoice Header"."Amount Including VAT",5,'<Integer Thousand><Decimals,3>');

Datei.WRITE(DELCHR(SchreibString + SchreibStringdec,'>'));

OnPostDataItem()
Datei.CLOSE;

ANSI2ASCII(Text : Text[1024]) : Text[1024]
FOR i := 1 TO STRLEN(Text) DO BEGIN
  CASE Text[i] OF
//  ANSI             ASCII
    131 : Text[i] := 159;  // ƒ
    161 : Text[i] := 173;  // ¡
    162 : Text[i] := 189;  // ¢
    163 : Text[i] := 156;  // £
    164 : Text[i] := 207;  // ¤
    165 : Text[i] := 190;  // ¥
    166 : Text[i] := 221;  // ¦
    167 : Text[i] := 245;  // §
    168 : Text[i] := 249;  // ¨
    169 : Text[i] := 184;  // ©
    170 : Text[i] := 166;  // ª
    171 : Text[i] := 174;  // «
    173 : Text[i] := 240;  // ­
    174 : Text[i] := 169;  // ®
    175 : Text[i] := 238;  // ¯
    176 : Text[i] := 167;  // °
    177 : Text[i] := 241;  // ±
    178 : Text[i] := 253;  // ²
    179 : Text[i] := 252;  // ³
    180 : Text[i] := 239;  // ´
    181 : Text[i] := 230;  // µ
    182 : Text[i] := 244;  // ¶
    183 : Text[i] := 250;  // ·
    184 : Text[i] := 247;  // ¸
    185 : Text[i] := 251;  // ¹
    187 : Text[i] := 175;  // »
    188 : Text[i] := 172;  // ¼
    189 : Text[i] := 171;  // ½
    190 : Text[i] := 243;  // ¾
    191 : Text[i] := 168;  // ¿
    192 : Text[i] := 183;  // À
    193 : Text[i] := 181;  // Á
    194 : Text[i] := 182;  // Â
    195 : Text[i] := 199;  // Ã
    196 : Text[i] := 142;  // Ä
    197 : Text[i] := 143;  // Å
    198 : Text[i] := 146;  // Æ
    199 : Text[i] := 128;  // Ç
    200 : Text[i] := 212;  // È
    201 : Text[i] := 144;  // É
    202 : Text[i] := 210;  // Ê
    203 : Text[i] := 211;  // Ë
    204 : Text[i] := 222;  // Ì
    205 : Text[i] := 214;  // Í
    206 : Text[i] := 215;  // Î
    207 : Text[i] := 216;  // Ï
    208 : Text[i] := 209;  // Ð
    209 : Text[i] := 165;  // Ñ
    210 : Text[i] := 227;  // Ò
    211 : Text[i] := 224;  // Ó
    212 : Text[i] := 226;  // Ô
    213 : Text[i] := 229;  // Õ
    214 : Text[i] := 153;  // Ö
    215 : Text[i] := 158;  // ×
    216 : Text[i] := 157;  // Ø
    217 : Text[i] := 235;  // Ù
    218 : Text[i] := 233;  // Ú
    219 : Text[i] := 234;  // Û
    220 : Text[i] := 154;  // Ü
    221 : Text[i] := 237;  // Ý
    222 : Text[i] := 232;  // Þ
    223 : Text[i] := 225;  // ß
    224 : Text[i] := 133;  // à
    225 : Text[i] := 160;  // á
    226 : Text[i] := 131;  // â
    227 : Text[i] := 198;  // ã
    228 : Text[i] := 132;  // ä
    229 : Text[i] := 134;  // å
    230 : Text[i] := 145;  // æ
    231 : Text[i] := 135;  // ç
    232 : Text[i] := 138;  // è
    233 : Text[i] := 130;  // é
    234 : Text[i] := 136;  // ê
    235 : Text[i] := 137;  // ë
    236 : Text[i] := 141;  // ì
    237 : Text[i] := 161;  // í
    238 : Text[i] := 140;  // î
    239 : Text[i] := 139;  // ï
    240 : Text[i] := 208;  // ð
    241 : Text[i] := 164;  // ñ
    242 : Text[i] := 149;  // ò
    243 : Text[i] := 162;  // ó
    244 : Text[i] := 147;  // ô
    245 : Text[i] := 228;  // õ
    246 : Text[i] := 148;  // ö
    247 : Text[i] := 246;  // ÷
    248 : Text[i] := 155;  // ø
    249 : Text[i] := 151;  // ù
    250 : Text[i] := 163;  // ú
    251 : Text[i] := 150;  // û
    252 : Text[i] := 129;  // ü
    253 : Text[i] := 236;  // ý
    254 : Text[i] := 231;  // þ
    255 : Text[i] := 152;  // ÿ
  END;
END;
EXIT(Text);

ASCII2ANSI(Text : Text[1024]) : Text[1024]
FOR i := 1 TO STRLEN(Text) DO BEGIN
  CASE Text[i] OF
//  ASCII            ANSI
    159 : Text[i] := 131;  // ƒ
    173 : Text[i] := 161;  // ¡
    189 : Text[i] := 162;  // ¢
    156 : Text[i] := 163;  // £
    207 : Text[i] := 164;  // ¤
    190 : Text[i] := 165;  // ¥
    221 : Text[i] := 166;  // ¦
    245 : Text[i] := 167;  // §
    249 : Text[i] := 168;  // ¨
    184 : Text[i] := 169;  // ©
    166 : Text[i] := 170;  // ª
    174 : Text[i] := 171;  // «
    240 : Text[i] := 173;  // ­
    169 : Text[i] := 174;  // ®
    238 : Text[i] := 175;  // ¯
    167 : Text[i] := 176;  // °
    241 : Text[i] := 177;  // ±
    253 : Text[i] := 178;  // ²
    252 : Text[i] := 179;  // ³
    239 : Text[i] := 180;  // ´
    230 : Text[i] := 181;  // µ
    244 : Text[i] := 182;  // ¶
    250 : Text[i] := 183;  // ·
    247 : Text[i] := 184;  // ¸
    251 : Text[i] := 185;  // ¹
    175 : Text[i] := 187;  // »
    172 : Text[i] := 188;  // ¼
    171 : Text[i] := 189;  // ½
    243 : Text[i] := 190;  // ¾
    168 : Text[i] := 191;  // ¿
    183 : Text[i] := 192;  // À
    181 : Text[i] := 193;  // Á
    182 : Text[i] := 194;  // Â
    199 : Text[i] := 195;  // Ã
    142 : Text[i] := 196;  // Ä
    143 : Text[i] := 197;  // Å
    146 : Text[i] := 198;  // Æ
    128 : Text[i] := 199;  // Ç
    212 : Text[i] := 200;  // È
    144 : Text[i] := 201;  // É
    210 : Text[i] := 202;  // Ê
    211 : Text[i] := 203;  // Ë
    222 : Text[i] := 204;  // Ì
    214 : Text[i] := 205;  // Í
    215 : Text[i] := 206;  // Î
    216 : Text[i] := 207;  // Ï
    209 : Text[i] := 208;  // Ð
    165 : Text[i] := 209;  // Ñ
    227 : Text[i] := 210;  // Ò
    224 : Text[i] := 211;  // Ó
    226 : Text[i] := 212;  // Ô
    229 : Text[i] := 213;  // Õ
    153 : Text[i] := 214;  // Ö
    158 : Text[i] := 215;  // ×
    157 : Text[i] := 216;  // Ø
    235 : Text[i] := 217;  // Ù
    233 : Text[i] := 218;  // Ú
    234 : Text[i] := 219;  // Û
    154 : Text[i] := 220;  // Ü
    237 : Text[i] := 221;  // Ý
    232 : Text[i] := 222;  // Þ
    225 : Text[i] := 223;  // ß
    133 : Text[i] := 224;  // à
    160 : Text[i] := 225;  // á
    131 : Text[i] := 226;  // â
    198 : Text[i] := 227;  // ã
    132 : Text[i] := 228;  // ä
    134 : Text[i] := 229;  // å
    145 : Text[i] := 230;  // æ
    135 : Text[i] := 231;  // ç
    138 : Text[i] := 232;  // è
    130 : Text[i] := 233;  // é
    136 : Text[i] := 234;  // ê
    137 : Text[i] := 235;  // ë
    141 : Text[i] := 236;  // ì
    161 : Text[i] := 237;  // í
    140 : Text[i] := 238;  // î
    139 : Text[i] := 239;  // ï
    208 : Text[i] := 240;  // ð
    164 : Text[i] := 241;  // ñ
    149 : Text[i] := 242;  // ò
    162 : Text[i] := 243;  // ó
    147 : Text[i] := 244;  // ô
    228 : Text[i] := 245;  // õ
    148 : Text[i] := 246;  // ö
    246 : Text[i] := 247;  // ÷
    155 : Text[i] := 248;  // ø
    151 : Text[i] := 249;  // ù
    163 : Text[i] := 250;  // ú
    150 : Text[i] := 251;  // û
    129 : Text[i] := 252;  // ü
    236 : Text[i] := 253;  // ý
    231 : Text[i] := 254;  // þ
    152 : Text[i] := 255;  // ÿ
  END;
END;
EXIT(Text);
Dateianhänge
Details.zip
Details zur Parametrisierung
(16.19 KiB) 46-mal heruntergeladen
Zuletzt geändert von andyypsilon am 27. November 2008 11:11, insgesamt 2-mal geändert.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Wer zuletzt lacht..... denkt zu langsam!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Benutzeravatar
andyypsilon
 
Beiträge: 21
Registriert: 24. Mai 2007 09:17
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3.60.A HF5 (5.01 SP1)

Re: Umlaute in Report bei Textausgabe

Beitragvon fiddi » 27. Oktober 2008 11:34

hallo,

ich gehe mal davon aus, das du deine Textausgabe mit einen 'Generic / Text Only'- Drucker ausgeben willst. Dieser hat selbst die Möglichkeit, die Daten zu konvertieren. Wenn du unter Windows-XP den Start-Button drückst, und dann unter "Einstellungen/Drucker- und FAX- Geräte/'DRUCKERNAME'/Eigenchaften/Schriftauswahl" die Codepage anpasst, könnte es schon ohne irgendwelchen Programmcode funktionieren.

Sollten die Daten für einen nicht 'Generic / Text Only'- Drucker bestimmt sein, so würde ich die Daten lieber nicht konvertieren. Es könnte sonst sein, dass der Drucker die konvertierten Daten nicht versteht. Denn die Ausgabe in die Datei unterscheidet sich nicht von dem, was an den Drucker geschickt wird.

Gruß, Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! Dafür ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7095
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Umlaute in Report bei Textausgabe

Beitragvon andyypsilon » 27. Oktober 2008 11:47

Hi Fiddi,

danke für die schnelle Reaktion, jedoch möchte ich mit dem Report eine Datei erzeugen ... (hatte das Problem falsch beschrieben).. die dann von einer anderen Anwendung eingelesen wird, somit muss ich die Daten leider konvertieren.

Gruß

and.Y
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Wer zuletzt lacht..... denkt zu langsam!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Benutzeravatar
andyypsilon
 
Beiträge: 21
Registriert: 24. Mai 2007 09:17
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3.60.A HF5 (5.01 SP1)

Re: Umlaute in Report bei Textausgabe

Beitragvon andyypsilon » 2. November 2008 14:18

Hallo,

leider habe ich das Problem noch nicht in den Griff bekommen.

Hat niemand eine Idee?

Bin für jeden Hinweis dankbar.

Gruß

and.Y
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Wer zuletzt lacht..... denkt zu langsam!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Benutzeravatar
andyypsilon
 
Beiträge: 21
Registriert: 24. Mai 2007 09:17
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3.60.A HF5 (5.01 SP1)

Re: Umlaute in Report bei Textausgabe

Beitragvon Timo Lässer » 2. November 2008 16:53

Wenn ich deinen Programmcode oben richtig interpretiert habe, dann konvertierst du die Variable Schreibstring von ASCII nach ANSI bevor du sie gefüllt hast.
Dies nützt dir rein gar nichts, da sie anschließend mit ASCII-Werten gefüllt wird.

Fazit: Erst deinen Schreibstring füllen und dann kurz vor dem Wegschreiben in die Datei konvertieren.
Code: Alles auswählen
Datei.WRITE(ASCII2ANSI(Schreibstring));


Übrigens: Die verwendeten Konvertierungs-Funktionen ASCII2ANSI und ANSI2ASCII, welche du oben verwendest sind äusserst unperformant, da sie deinen Schreibstring zeichenweise konvertieren.
Da du meine NAV-Tools ja bereits kennst, schau dir mal die Funktionen dort an. Dort wird nämlich nur beim ersten Aufruf die "Zeichentabelle" (also die beiden Variablen "ASCII" und "ANSI" aufgebaut und können anschließend in dem Befehl CONVERTSTR verwendet werden.
Performance-Gewinn (gemessen): 8-fache Geschwindigkeit!

Verwenden würdest du die Funktionen z. B. so:
Code: Alles auswählen
Datei.WRITE(TextMgt.ASCII2ANSI(Schreibstring));

TextMgt ist hier eine globale Variable, welche auf die Codeunit "TextManagement" (aus meinen NAV-Tools) zeigt.
(Würdest du sie lokal definieren, hättest du nicht die Performance-Vorteile, da jedesmal die Zeichentabellen neu initialisiert werden müssten.)
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! Dafür ist dieses Forum da.
Hier kannst du für MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5279
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Re: Umlaute in Report bei Textausgabe

Beitragvon andyypsilon » 27. November 2008 11:10

Hallo Timo,

vielen Dank für die schnelle Antwort und SORRY für die äußerst späte Reaktion.

Hat wunderbar funktioniert.

Beim Einlesen Deiner Nav Tools Codeunits hab ich festgestellt, dass viele dieser Codeunits schon in unserer Version (3.60 TGH / BOG) enthalten sind. In den Dokumentation Headers hab ich des öfteren Dein Kürzel gefunden ;-)

Hast DU evtl noch eine Beschreibung für diese Branchenlösung der BOG, denn wir haben diese von unserem alten NSC nicht bekommen.

Danke & Gruß

Andy
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Wer zuletzt lacht..... denkt zu langsam!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Benutzeravatar
andyypsilon
 
Beiträge: 21
Registriert: 24. Mai 2007 09:17
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3.60.A HF5 (5.01 SP1)

Re: Umlaute in Report bei Textausgabe

Beitragvon Timo Lässer » 27. November 2008 11:33

andyypsilon hat geschrieben:Beim Einlesen Deiner Nav Tools Codeunits hab ich festgestellt, dass viele dieser Codeunits schon in unserer Version (3.60 TGH / BOG) enthalten sind. In den Dokumentation Headers hab ich des öfteren Dein Kürzel gefunden ;-)
Das liegt daran, dass ich damals ausschließlich für die Branchenentwicklung zuständig war (zusammen mit ein paar Kollegen).
Da es schon zu der Zeit meine Tools gab sind diese mit in die Base Solution aufgenommen worden.
Leider hat man meinen Copyright Header aus den Objekten entfernt und stattdessen nur der BOG Header eingefügt. :evil:

andyypsilon hat geschrieben:Hast DU evtl noch eine Beschreibung für diese Branchenlösung der BOG, denn wir haben diese von unserem alten NSC nicht bekommen.
Da ich seit 2005 nicht mehr bei der BOG arbeite, kann ich dir keine Unterlagen zukommen lassen.
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! Dafür ist dieses Forum da.
Hier kannst du für MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5279
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21


Zurück zu NAV 3.xx

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast