[Gelöst]RequestForm aktiv / deaktiv

2. Februar 2007 11:35

Hallo,

ich habe einen Report, den ich wie folgt starte
Code:
REPORT.RUNMODAL(50061,FALSE,TRUE);

Dieser durchläuft alle Datensätze, ohne Request Form (was er auch soll!)

Nun möchte ich den Report auch mit RequestForm starten, allerdings soll dann das Feld Auftragsnummer ein Pflichtfeld sein. (So das nur die gewählten Nr. aktualisiert werden!)

Mein Versuch über den Befehl USEREQUESTFORM dieses zu realisieren schlug fehl. vermutlich weil der Befehl das Propertie UseReqForm abfragt.
Code:
Aufruf des Reports mit RequestForm
REPORT.RUNMODAL(50061,TRUE,TRUE);

Code im Report auf dem OnInitReport - Trigger

IF CurrReport.USEREQUESTFORM THEN
  MESSAGE(Text001);

Hat einer von Euch eine Idee, wie das zu realisieren ist?
Gruß Mikka
Zuletzt geändert von mikka am 2. Februar 2007 13:17, insgesamt 1-mal geändert.

2. Februar 2007 12:12

Worin liegt jetzt deine Schwierigkeit?
Wenn die Request Form aufgeht, soll
- im Feld Auftragsnummer schon etwas drinstehen und/oder
- der Benutzer unbedingt etwas darin eingeben?

Damit beim Klick auf OK etwas drinsteht, kannst du den Filter im OnPreReport-Trigger abfragen und ggf. mit einem ERROR reagieren.

(oder hab ich dein Problem überhaupt nicht verstanden?)

2. Februar 2007 12:23

Das heißt du startest den Report mal
Code:
REPORT.RUNMODAL(50061,FALSE,TRUE);

und mal:
Code:
REPORT.RUNMODAL(50061,TRUE,TRUE);

?

Und wenn er mit der RequestForm gestartet wird, soll er vor dem Ausführen prüfen, ob das Feld "Auftragsnummer" gefüllt ist?

Hab ich das richtig verstanden?

Gruß, Marc

2. Februar 2007 12:24

Ich schlage vor, den Report als Variable zu deklarieren; so kann man die USEREQUESTFORM Eigenschaft schon vor dem RUNMODAL setzten.

USEREQUESTFORM (Dataport & Report)
Use this function to return the current setting of the UseReqForm property, and to set this property to a new value.

[IsUseRequestForm] := USEREQUESTFORM([SetUseRequestForm])
IsUseRequestForm

Data type: boolean

The current setting of UseReqForm

SetUseRequestForm

Data type: boolean

The new setting of UseReqForm.

Comments
This function should be used before the request form is run - that is, in the OnInitReport trigger. Although it will not cause an error if it is used elsewhere, it will have no effect.

See the description of the UseReqForm property for details.

RUNMODAL (Report)
Use this function to load and execute the report you specify. Use this function or the Report.RUN function if you know at design time the exact report you want to run. Otherwise, use the Report.RUNMODAL or Report.RUN function.

Report.RUNMODAL
Report

Data type: report

Once you define this variable, you can run this function or the Report.RUN function on the variable. As opposed to the Report.RUN function, the system does not automatically clear the variable after it executes this function. You must handle clearing the variable.

Comments
If the report you specify does not exist, a compile error occurs.

The system runs the request form modally when you use this function.

Example
This example shows how to use this function. Assume that the variable Report has been defined as Report 1.

CLEAR(r)
Record.SETRECFILTER()
Report.XXX; // any user-defined function
Report.SETTABLEVIEW(Rec)
Report.RUNMODAL()

Note that the code above includes the CLEAR function to make sure the variable has been cleared.


Das mit dem Pfilchtfeld müssten dann wohl im OnPreReport geregelt werden ...

2. Februar 2007 12:26

** Edit by Mikka**
Dieses bezieht sich auf die Antwort von Natalie (Stryk war schneller)

:-)
Indirekt, wenn der Report ohne Requestform gestartet wird, sollen alle Daten aktualisiert werden. (Das klappt)

Wenn der Report mit der Requestform geöffnet wird, dann muss die Auftragsnummer ein Pflichtfeld sein, also keine Verarbeitung ohne Auftragsnummer.

Wenn ich das Feld abfrage mit GETFILTER, dann habe ich das Problem, das der Report dieses Feld immer Prüft, also auch dann, wenn der Report ohne RequestForm gestartet wurde.
Gruß Mikka

2. Februar 2007 12:58

Danke Styk,
der Tipp mit der Variablen war die Lösung. *Danke*

Hier die Lösung:
-->Den Report in den Properties "UseReqForm" auf Nein setzen.
-->Auf dem OnPreReport-Trigger des Reports folgenden Code schreiben:
Code:
IF CurrReport.USEREQUESTFORM THEN
  IF rec.GETFILTER(rec.Auftragsnummer) = '' THEN
    ERROR(Text001);

-->Auf dem OnPush-Trigger des MenuButtons (von wo der Report gestartet werden soll) eine Variable vom Typ Report erstellen (auf den gewünschten Report) und folgenden Code einfügen.
Code:
CLEAR(rep);
Rep.USEREQUESTFORM(TRUE);
Rep.RUNMODAL;

Gruß Mikka

2. Februar 2007 13:01

Immerhin hab ich das Problem jetzt verstanden ;-)
Ich hätte (da ich UseReqForm nicht kannte) das wahrscheinlich über eine globale Variable ("glArtikelnrPruefen") vor Rep.RUN geregelt.
Den Prüfung im OnPreReport also nur dann ausführen, wenn diese Variable = Ja ist, auch wenn der von Stryk vorgeschlagene Weg eleganter ist ;-)

2. Februar 2007 13:07

Manchmal ist es auch nicht einfach die Fragen / Probleme zu beschreiben :roll:

...ich habe auch erst gedacht "das kann doch nicht sein..."

Aber zum Glück haben wir das Forum hier, so das wir uns hier einander Gegenseitig helfen können.

Apropo helfen:
Mal schauen wann ich Stryk helfen kann
:mrgreen:
Gruß Mikka

**Edit by Mikka**
@Marc
Sorry deinen Beitrag habe ich erst jetzt gelesen, die Antwort ist JA

2. Februar 2007 13:56

Uh?
Mal schauen wann ich Stryk helfen kann

:oops: :wink:

2. Februar 2007 14:01

Es gibt aber auch noch eine weitere Möglichkeit, bei der man dann den Report nicht als Variable definieren muss:

Im OnOpenForm-Trigger der RequestForm eine globale Boolean-Variable (z. B. "ReqFormUsed") auf TRUE setzen.
Im OnPreReport fragst du dann einfach diese Variable ab:
Code:
IF ReqFormUsed THEN
  IF GETFILTER("Auftragsnr.") = '' THEN
    ERROR(Text001);

2. Februar 2007 14:20

Fast genauso hab ich das doch auch beschrieben .... :oops:

2. Februar 2007 14:24

Hmm,
im Moment rennt mir die Zeit weg, ich will es dann nochmal Prüfen.
Aber mein Bauchgefühl sagt mir, das das nicht Funktionieren wird.
Gruß Mikka

2. Februar 2007 15:54

Natalie hat geschrieben:Fast genauso hab ich das doch auch beschrieben .... :oops:

Upps...
... irgendwie scheint es mir so, als hätte ich deine Antwort wohl zu schnell überflogen und es nicht bemerkt.