[Gelöst] - OnInitReport Feld abfragen -CC

24. Januar 2019 16:11

Hallo zusammen,

ich sollte in einem Report folgendes programmieren, wenn in meiner Tabelle das Feld "Nr" größer ist als 99.700, dann soll er eine Meldung bringen.

Jedoch hat mein Report im "OnInitReport" noch keine Daten aus der Tabelle und somit funktioniert das nicht..

Ich hab es nachgeprüft, in dem ich im "OnInitReport" folgendes eingetragen habe:

Code:
MESSAGE (FORMAT(Rezeptzähler.Nr));


Dann kommt als Ergebnis beim öffnen des Reports aber "0" anstatt meine tatsächliche Zahl.

Gibt es eine Möglichkeit die Tabelle abzurufen beim öffnen des Reports?

Also mein Code sollte später denke ich mal so aussehen:
Code:
IF Rezeptzähler.Nr >= 99700
THEN
MESSAGE ('Bitte Info an die IT!');


Aber was muss ich tun, damit mein Report schon beim öffnen die Tabelle abfrägt?

Vielen Dank
Zuletzt geändert von Steffen W. am 25. Januar 2019 11:34, insgesamt 1-mal geändert.

Re: OnInitReport Feld abfragen -CC

24. Januar 2019 17:07

Daten sind erst im OnPreDataItem-Trigger des DataItems verfügbar.
Im OnPreReport (da wurden eventuelle Filter aus der RequestForm schon angewandt, die kennt der OnInitReport nicht) kann man aber auch eine Recordvarable für die Tabelle anlegen und darauf filtern, um die Message anzuzeigen.

Re: OnInitReport Feld abfragen -CC

24. Januar 2019 23:32

Danke für deine Nachricht.

Ich habe einen Record angelegt auf meine Tabelle, aber was für ein Filter muss ich eingeben und vor allem wo?

Re: OnInitReport Feld abfragen -CC

25. Januar 2019 09:41

Also ich habe einen Teilerfolg geschafft:

Ich habe eine Variable mit Namen "RezeptzählerRec" und dem Typ "Record" und dem Subtype "Rezeptzähler" angelegt und im OnInit Report folgendes eingetragen:

Code:
RezeptzählerRec.SETFILTER(Nr, '>99700');
IF RezeptzählerRec.FINDSET THEN
MESSAGE('Bitte Info an die IT!');

RezeptzählerRec.SETFILTER(Nr, '99999');
IF RezeptzählerRec.FINDSET THEN
ERROR('Info an die IT!');


So erscheint die Nachricht und bei 99999 auch der Fehler.

Jetzt würde ich nur gerne wissen wie ich das einstelle, dass er im ersten "SETFILTER" die Zahl >99700 und aber gleichzeitg <99999 nimmt?

Damit dann wenn die Zahl 99999 erreicht wurde, nur der Fehler kommt und nicht nochmal die Nachricht "Bitte Info an die IT".

Vielen Dank

Re: OnInitReport Feld abfragen -CC

25. Januar 2019 10:07

Einfache zusammenhängende Bereiche filtert man mit SETRANGE.
Code:
RezeptzählerRec.SETRANGE(Nr, '99701','99999');

Re: OnInitReport Feld abfragen -CC

25. Januar 2019 10:47

Hallo,
Jetzt würde ich nur gerne wissen wie ich das einstelle, dass er im ersten "SETFILTER" die Zahl >99700 und aber gleichzeitg <99999 nimmt?

Mit SETFILTER wäre das:

Code:
RezeptzählerRec.SETFILTER(Nr,'>99700&<99999');


Aber Kowa hat recht, man sollte in dem Fall besser SETRANGE benutzen.
Immer in die microsoft-docs schauen, ist dort gut erklärt:
https://docs.microsoft.com/en-us/dynami ... n--record-

Müsste dann aber
Code:
RezeptzählerRec.SETRANGE(Nr,'99701','99998');
sein.
Weil du den unteren und oberen Wert nicht mit einschließen willst.

Re: OnInitReport Feld abfragen -CC

25. Januar 2019 11:10

Super danke euch!

Code:
SETRANGE
war das richtige!

LG
Steffen