[Gelöst] Report Return Value

28. Februar 2008 15:55

Hallo zusammen,

ich rufe aus einem Form einen Report auf. Dieser Report führt updates durch. Nach dem Aufruf des Reports werden weitere Verarbeitungen Im Form durchgeführt. Diese sollten nun aber nur unter gewissen Bedingungen, welche im Report auftreten, durchgeführt werden.

Wie kann ich nun prüfen, was im Report gemacht wurde?

Ich habe schon versucht, eine DEF Function im Report anzugeben. In dieser habe ich z.B. einen Boolean-Wert auf TRUE gesetzt, wenn alles i.O. war. Nach dem Aufruf des Reports habe ich dann den Report nochmals aus dem Form nur mit dieser DEF Function aufgerufen. Leider ist dann aber eben alles wieder initialisiert...

Idee?

Vielen Dank!
Beno.
Zuletzt geändert von beno am 29. Februar 2008 17:38, insgesamt 1-mal geändert.

28. Februar 2008 16:52

Kannst Du Dein Problem etwas genauer beschreiben?
Ist Deine Lösung vielleicht eine tmpTabelle, die Du mit den Ergebnissen füllst und dann in Deinem Form wieder abgfragst?
tmpTabelle nicht als temporäre Tabelle im Report, sondern als echte Tabelle, die Du richtig anlegst, aber nach Deinen Routinen immer komplett wieder löschst?!

Gruß
Björn

28. Februar 2008 17:00

Hallo,

Du darst den Report nicht über REPORT.Runmodal aufrufen sondern musst eine Report-Variable definieren. Wenn Du im Report dann Dein Auswertungsergenis in einer globalen Variable speicherst, kannst Du das Ergebnis anschließend über diese Funktion auslesen.

Also z. B.:
Code:
...
repName.Runmodal;
ergebnis := repName.GetErgebnis;

Report Return Value

29. Februar 2008 08:27

Hallo Björn,

der Original-Code im Form sieht wie folgt aus:

Code:
  BEGIN
     recLeadL.GET(recImportLinesL."Integration ID");
     IF cuCarmenManagementG.CheckLeadBeforeReject(recLeadL) THEN
        BEGIN
           recLeadL.SETRECFILTER;
           REPORT.RUNMODAL(REPORT::"CRM Lead Reject",
                                         TRUE,FALSE,recLeadL);
        END;

        recImportLinesL."Processing Status" :=
          "Processing Status"::Ignored;
        recImportLinesL.MODIFY(TRUE);
  END;

Die beiden letzten Zeilen möchte ich nun aber nur abhängig vom Resultat im aufgerufenen Report durchführen.
Ich habe nun eine Global Variable für den Report erstellt und diesen mit einem definierten Return Value aufgerufen:

Code:
IF NOT repCRMLeadRejectG.funcUpdated THEN EXIT;

Der Return Value wird im Report gesetzt, aber alle Tables im Report sind initialisiert.

Ist dabei das Problem, dass schon der erste Report-Aufruf mit der Global Variable aufgerufen werden muss, also z.B.

Code:
repCRMLeadRejectG.RUNDMODAL"
   anstatt
REPORT.RUNMODAL(REPORT::"CRM Lead Reject") ?


Merci, Beno

29. Februar 2008 10:39

Ist dabei das Problem, dass schon der erste Report-Aufruf mit der Global Variable aufgerufen werden muss, also z.B.

repCRMLeadRejectG.RUNDMODAL"
anstatt
REPORT.RUNMODAL(REPORT::"CRM Lead Reject") ?


Hallo Beno,

das ist genau das, was ich mit meinem Post ausdrücken wollte.

[Gelöst] Report Return Value

29. Februar 2008 17:37

Woger,
Dir herzlichen Dank. Der Teufel liegt bekanntlich im Detail und dieses habe ich übersehen. Es funktioniert nun einwandfrei!

Ben 8-)