[Gelöst] Sprache/Bericht auf Englisch

8. Februar 2007 11:02

Guten Tag!

Wir haben zwei Berichte. Einen auf Deutsch und einen auf Englisch.
Wie kann ich es am Besten lösen die bei einem Button eventuell zu hinterlegen und dann eine Abfrage kommt ob man es Deutsch oder Englisch haben will? Hoffe ich habe mich verständlich genug ausgedrückt :)
Vielen Dank schon mal!

lg cremoso
Zuletzt geändert von cremoso am 14. März 2007 16:43, insgesamt 1-mal geändert.

8. Februar 2007 11:51

Hallo cremoso,
"Herzlich Wilkommen" hier im Forum.

Evtl so:
Auf dem Push Trigger
Code:
IF CONFIRM('Ausdruck in Deutsch?',TRUE) THEN
 REPORT.RUNMODAL(Dein_Deutscher_Report)
ELSE
  REPORT.RUNMODAL(Dein_Englischer_Report);


Alternativ:
Auswahl = Variable Integer
Code:
Auswahl := STRMENU('Deutsch drucken,Englisch drucken,Abbrechen',1);
CASE Auswahl OF
  1: REPORT.RUNMODAL(Dein_Deutscher_Report);
  2: REPORT.RUNMODAL(Dein_Englischer_Report);
  3: MESSAGE('Dier Verarbeitung wurde abgebrochen');
END;

Gruß Mikka

8. Februar 2007 12:04

Danke schon dafür!
Habe aber noch ein Problem. Und zwar (man oh man ist Navision unübersichtlich) steht schon eine Menge Code drin. Habe drei Buttons. Einmal um eine Bestellung per Fax, per Email zu verschicken und einmal nur zum Druck. Bei Fax ist das Problem das wir nicht so genau wissen was da gemacht wird. Wir sind im Navision Programmieren ziemlich neu.

code hätte ich hier.

Beim Button hinterlegt - Finde da nur raus was für eine CodeUnit aufgerufen wird...
Code:
<Control1000000009> - OnPush()
BelegDrucken.EinkKopfDruck(Rec);
 
BerechneTotale()
EinkBuchen.SummeEinkaufZeilen(Rec,1,TotalEkZeile,TotalEkZeileMW,MWStBetrag,MWSTBetragText);
 
InitDokument(VAR Dokument : Record Dokument)
// DM_stle
Dokument.INIT;
Dokument.Herkunftstyp := 'BESTELLUNG';
Dokument."Herkunftsnr." := "Nr.";


Das ist der "wichtige" Teil aus der codeunit
Code:
EinkKnopfDruckFax(EinkKopf  : Record Einkaufskopf)

//************ 2004-03-18 : Ro : 1.00 **************************************
EinkKopf.SETRANGE("Nr.",EinkKopf."Nr.");
EinkaufEinrichtung.GET;
IF EinkaufEinrichtung."Rechnungsrab. berechnen" THEN BEGIN
  EinkZeile.RESET;
  EinkZeile.SETRANGE(Belegart,EinkKopf.Belegart);
  EinkZeile.SETRANGE("Belegnr.",EinkKopf."Nr.");
  EinkZeile.FIND('-');
  EinkBerechRab.RUN(EinkZeile);
  EinkKopf.GET(EinkKopf.Belegart,EinkKopf."Nr.");
  COMMIT;
END;
CASE EinkKopf.Belegart OF
  EinkKopf.Belegart::Anfrage:
    BerichtsAuswahl.SETRANGE(Verwendung,BerichtsAuswahl.Verwendung::EK_AnFax);
  EinkKopf.Belegart::Rahmenbestellung:
    BerichtsAuswahl.SETRANGE(Verwendung,BerichtsAuswahl.Verwendung::"EK-Rahm");
  EinkKopf.Belegart::Bestellung:
    BerichtsAuswahl.SETRANGE(Verwendung,BerichtsAuswahl.Verwendung::EK_BeFax);
  ELSE
    EXIT;
END;
BerichtsAuswahl.SETFILTER("Bericht ID",'<>0');
BerichtsAuswahl.FIND('-');
REPEAT
  REPORT.RUNMODAL(BerichtsAuswahl."Bericht ID",TRUE,FALSE,EinkKopf)
UNTIL BerichtsAuswahl.NEXT = 0;


ich verstehe aber nicht wann der bericht aufgerufen wird

8. Februar 2007 12:38

ich verstehe aber nicht wann der bericht aufgerufen wird


In deinem Codeunit-Ausschnitt ganz unten:
Code:
REPEAT
  REPORT.RUNMODAL(BerichtsAuswahl."Bericht ID",TRUE,FALSE,EinkKopf)
UNTIL BerichtsAuswahl.NEXT = 0;

8. Februar 2007 12:46

Aber wo mich das hinführen soll oder heissen soll weiß ich nicht

Code:
BerichtsAuswahl."Bericht ID",TRUE,FALSE,EinkKopf

8. Februar 2007 13:34

Du hast recht, das, was du vorhast, beißt sich übelst mit dem Standard.

Der Standard sieht vor, dass du keine zwei Berichte für verschiedene Sprachen verwendest, sondern im Gegenteil, einen Bericht immer mehrsprachig anlegst.

Im Bericht selber (und das würde sich auch nicht mit deinem Plan beißen) kann die Sprachauswahl umgeswitcht werden (etwa über die Optionen).

8. Februar 2007 13:36

Wie funktioniert dies genau mit der Mehrsprachigkeit in einem Bericht??

Ich weiss zwar, dass es hier die Caption ML gibt, diese greift jedoch meines Wissens immer auf die Current Language vom User/Windows zurück, somit geht es in meinem Fall nicht.

Kann ich die Language ID mit dem Aufrufbefehl vom Report mitangeben?
Dies wäre die beste Lösung.

Danke für deine nette Hilfe.

8. Februar 2007 14:35

Dies wird bereits im Standard so gemacht.
Nimm zum Beispiel die Auftragsbestätigung, Report 204.
Die Sprache richtet sich nach der Sprache des Debitors, der Sie bekommt.

Umgesetzt wird dies so:
Im DataItem "Sales Header", Trigger OnAfterGetRecord findest du ganz oben
Code:
CurrReport.LANGUAGE := Language.GetLanguageID("Language Code");


Und so musst du das verstehen:
Sprache des Reports = Funktion zum Umstellen (Paramter: Ziel-Sprache).
Die Zielsprache ist hier das Feld "Language Code" der Tabelle Sales Header.
Natürlich kannst du statt der Feld-Variablen auch mit einer von dir geschaffenen Code-Variable arbeiten. Hauptsache, es wird ein gültiger Sprachcode übergeben.