Filter in Report bleibt stehen

22. November 2007 16:51

Hallo zusammen,

Ich rufe einen Report aus einer Codeunit heraus auf. Dazu habe ich den Report als Variable deklariert und gebe einen vorgefilterten Record mit.

Nun kommt es vor, dass genau dieser Report zuweilen auch vom selben User direkt aus dem Menü gestartet wird. Die dabei verwendeten Filter bleiben z.T. stehen (auf untergeordneten DataItems). Dadurch bringt dann der per Programm aufgerufene Report falsche Ergebnisse aufgrund der bereits vorhandenen Kriterien und der durch die Codeunit abgesetzten.

Kann ich das irgendwie verhindern?
Zuletzt geändert von rotsch am 23. November 2007 10:21, insgesamt 1-mal geändert.

22. November 2007 16:57

Ist in der RequestOptions-Form des Report ein Property wie SaveValues oder SaveTableView , die dann evtl. im untergeordneten DataItem abgefragt werden, eingeschaltet?

22. November 2007 17:05

lol genau das Problem hatte ich heute auch.
Wie MrBurns schon sagte: Der Fehlergrund ist das SaveValues = Yes in der Requestform.
Eine Möglichkeit wäre es, diese Property = Nein zu setzen.
Möchtest du dies aber nicht, bleibt dir noch ein anderer Ausweg (nämlich meiner ;-)):
Mein Report erhält einen Parameter, der ihm sagt, dass er aus der Codeunit (oder was auch immer, jedenfalls nicht durch den Benutzer) aufgerufen wird.
Ist dieser Wert gesetzt, so führe ich im OnPreDataItem-Trigger einfach ein RESET aus.

22. November 2007 17:31

SaveValues habe ich schon auf NO, das war auch mein erster Gedanke. Das betrifft aber anscheindend nur die Werte, dieim RequestForm erfasst werden und nicht jene Filter, die in den DataItems eingetragen werden.

Wenn ich die Methode RESET verwende auf dem OnPreDataItem gehen auch die Filter verloren, die ich dem Report mitgegeben habe per Recordvariable. Oder sehe ich das falsch?

22. November 2007 17:35

Sind irgendwelche Filtergroups gesetzt?

22. November 2007 17:39

MrBurns hat geschrieben:Sind irgendwelche Filtergroups gesetzt?


Nein, Filtergroups werden keine verwendet in diesem Zusammenhang.

22. November 2007 17:50

rotsch hat geschrieben:SaveValues habe ich schon auf NO, das war auch mein erster Gedanke. Das betrifft aber anscheindend nur die Werte, dieim RequestForm erfasst werden und nicht jene Filter, die in den DataItems eingetragen werden.


Da bin ich mir nicht sicher ...
Aber dann scheinst du um meinen Lösungsweg kaum herumzukommen. Der funktioniert, heute getestet ;-)

23. November 2007 10:21

rotsch hat geschrieben:SaveValues habe ich schon auf NO, das war auch mein erster Gedanke. Das betrifft aber anscheindend nur die Werte, dieim RequestForm erfasst werden und nicht jene Filter, die in den DataItems eingetragen werden.


Ich habe das getestet. Das ist also so, wie ich geschrieben habe.

23. November 2007 11:30

Ein CLEAR auf die Reportvariable nach dem Aufruf im Codeunit sollte die Filterwerte aller DataItems löschen.

23. November 2007 11:49

Kowa hat geschrieben:Ein CLEAR auf die Reportvariable nach dem Aufruf im Codeunit sollte die Filterwerte aller DataItems löschen.


Das hatte ich gestern auch mal kurz angetestet, war aber nicht erfolgreich.

Beispiel:
Rufe den Report 296 auf und setze einen Filter auf z. B. Belegnr. Report wieder schließen.

Starte Codeunit mit diesem Code:
CLEAR(rep296);
rep296.RUNMODAL;
Der Filter auf die Belegnr. ist immer noch da.

mfg
woger