[gelöst] RequestForm-Variable vor RUNMODAL setzen

7. März 2007 11:46

Hallo Leute,

nach langer Zeit hab' ich mal wieder 'nen Problemchen :

Verschiedene Dokumente, die über unterschiedliche Reports erzeugt werden, sollen archiviert werden.
Das Ganze soll über einen Batchlauf stattfinden, die Reports sollen nach Möglichkeit nicht verändert werden, da sie nicht von uns erstellt wurden.
Probleme macht hier im Beispiel der Report 50099, der in der Requestform ein Optionsfeld mit der Auswahl "kein Druck/Wiederholung,..." hat.
Wird der Report also wie unten mit RUNMODAL aufgerufen steht das Optionsfeld standardmäßig auf "kein Druck" und das läuft auch korrekt :-( .
Im Report 50099 existiert jetzt eine Funktion mit der dieses Optionsfeld geändert werden kann, leider ist die Info beim Aufruf von REPORT.RUNMODAL nicht mehr vorhanden (ist ja eigentlich auch klar).
Rep50099 ist eine Variable vom Typ Report in die der 50099er eingetragen ist.

Gibt's dennoch 'ne Möglichkeit dieses Optionsfeld von "außen" zu setzen ?


Code:
...
// hier wird der Report ausgewählt, der zur Archivierung genutzt werden soll
IF (Bedingung1) THEN BEGIN
  RepNr := 50001;
END IF (Bedingung1) THEN BEGIN
  RepNr := 50002;

... // weitere Bedingungen

END ELSE BEGIN
  // hier zusätzlich Report-Optionsfeld setzen !?
  Rep50099.setParameter("Wiederholung");
  RepNr := 50099;
END;

// Report aufrufen
// (obiger Parameter ist hier nicht mehr gesetzt)
REPORT.RUNMODAL(RepNr,FALSE,FALSE,RegVuAbrechnung);
...



Vorab schon mal BESTEN DANK !
Zuletzt geändert von stephan.bosau am 7. März 2007 12:50, insgesamt 1-mal geändert.

7. März 2007 12:37

Sollte eigentlich funktionieren. Ich verwende auch diese Art um Parameter von "außen" zu übergen.

Im Report bei der Funktion setParameter - verarbeitest du diesen Eingangsparamter auch richtig?
Schau mal mit dem Debugger oder gib temporär eine Message aus ob der Parameter ankommt.

mfg Jürgen

7. März 2007 12:57

Hallo Stephan - wie hast du das Problem gelösst?

7. März 2007 12:58

sorry, mein Fehler :oops:

so klappt's dann :

Code:
...
// hier wird der Report ausgewählt, der zur Archivierung genutzt werden soll
IF (Bedingung1) THEN BEGIN
  RepNr := 50001;
END IF (Bedingung1) THEN BEGIN
  RepNr := 50002;

... // weitere Bedingungen

END ELSE BEGIN

  RepNr := 50099;

  // hier zusätzlich Report-Optionsfeld setzen !
  Rep50099.setParameter("Wiederholung");
  Rep50099.SETTABLEVIEW(RegVuAbrechnung);
  Rep50099.USEREQUESTFORM:=FALSE;
  Rep50099.RUNMODAL();

END;

// Report aufrufen
  IF RepNr <> 50099 THEN
    REPORT.RUNMODAL(RepNr,FALSE,FALSE,RegVuAbrechnung);
...


Anm.: Bin am 'nem neuen Rechner mal wieder auf den Objekt-Cache reingefallen :-?

7. März 2007 13:03

Hi Jürgen,

bei 'nem Aufruf von REPORT.RUNMODAL(ReportNummer,...) gibt's natürlich keine Bezug zu dem Objekt (oben als Rep50099 beschrieben).
Somit wird beim Aufruf 'ne neue "Instanz" erzeugt, die den Inhalt von Rep50099 nicht kennt.

Gruß

Stephan