OnQueryCloseForm auf RequestForm - wie Abbrechen abfangen?

11. April 2007 10:31

Der Benutzer füllt die Optionen eines Reports nicht vollständig (Fehler).
Dies möchte ich abfangen, ohne die RequestForm zu schließen. Hierfür möchte ich den Trigger OnQueryCloseForm füllen.

Problem: Der Trigger wird auch aufgerufen, wenn der Benutzer auf "Abbrechen" klickt. Wie kann ich in dem Trigger abfragen, ob er auch wirklich OK geklickt hat?

Re: OnQueryCloseForm auf RequestForm - wie Abbrechen abfange

11. April 2007 11:06

Hi Natalie.

Natalie hat geschrieben:Dies möchte ich abfangen, ohne die RequestForm zu schließen. Hierfür möchte ich den Trigger OnQueryCloseForm füllen.

Aber dadurch, dass du Code in diesem Trigger packst, heißt das doch nicht, dass sich die RequestForm nicht schließt, oder?

Natalie hat geschrieben:Wie kann ich in dem Trigger abfragen, ob er auch wirklich OK geklickt hat?

Ich glaube, dass das nicht geht?

Gruß, Marc

11. April 2007 11:43

Doch,
ich meine mit
EXIT(FALSE)
(Bin mir aber nicht ganz sicher.)

Gruß Mikka

Re: OnQueryCloseForm auf RequestForm - wie Abbrechen abfange

11. April 2007 11:46

Marc Teuber hat geschrieben:Aber dadurch, dass du Code in diesem Trigger packst, heißt das doch nicht, dass sich die RequestForm nicht schließt, oder?


Nein, das Problem ist einfach, dass falls der Benutzer eine Falscheingabe macht, er zwar eine Fehlermeldung bekommen soll, aber gleichzeitig im der RequestForm bleiben soll. Er soll natürlich NICHT in der Form bleiben, wenn er stumpf auf Abbrechen klickt, ohne vorher die Felder ausgefüllt zu haben.

Natalie hat geschrieben:Ich glaube, dass das nicht geht?


Das befürchte ich ja auch ;-)

Gibt es vielleicht einen anderen Trigger, der geeignet ist?

11. April 2007 11:48

mikka hat geschrieben:Doch,
ich meine mit
EXIT(FALSE)
(Bin mir aber nicht ganz sicher.)

Gruß Mikka


Liebe Kinder, bitte nicht nachmachen!
Schreibst du diesen Befehl ohne vorherige Bedingung in den Trigger, kannst du das Fenster nie wieder schließen (außer du schießt Navision über den Task-Manager ab).

Womit wir wieder bei der Bedingung wären: EXIT(FALSE) nur dann, wenn nicht alle Felder gefüllt - UND auf OK geklickt!

11. April 2007 11:56

:-P

Ok,
ich war zu faul mehr zu schreiben.
Aber der Fachmann weiß doch, das eine Bedinung dazu gehört... :oops:

Ich habe es eben getestet, die Form lässt sich nicht "zu X`sen", eine Seitenansicht geht sehr wohl.
Ich meine das gleiche auch schon einmal gehabt zu haben, evtl. hilft dir die Forensuche weiter.
Gruß Mikka

11. April 2007 12:14

mikka hat geschrieben:Doch,
ich meine mit
EXIT(FALSE)

Ahhh... Cool! Danke für den Tipp!

Gruß, Marc

11. April 2007 12:22

Der Unterschied zwischen Drucken/Seitenansicht und Abbrechen besteht darin, dass der Trigger OnQueryCloseForm() im ersten Fall NACH dem Trigger OnPreReport() ausgeführt wird. Leider auch erst nach Beendigung des Report, was dir sicherlich nicht hilft.

Um nachträglich festzustellen, ob der Report abgebrochen wurde kannst du z.B. eine Variable WasCanceled deklarieren und im OnInitReport() auf TRUE setzen und im OnPreReport() auf FALSE, dann kannst du im OnQueryCloseForm() abfragen, ob der Bericht abgebrochen wurde (WasCanceled = TRUE) oder nicht.

Hilft dir leider jetzt nicht wirklich weiter :)

Wenn du dir viel Arbeit machen willst, dann könntest du den Bericht instanziieren, also den Bericht über eine Variable aufrufen und Funktionen fürs auslesen und setzen div. Werte und für die Werteprüfung erstellen. So kannst du dann im Fall falscher Daten den Bericht nochmals mit den vorher eingetragenen Daten aufrufen sofern WasCanceled nicht gesetzt ist.

Oha. Mach doch einfach ne Fehlermeldung und gut ist 8-)

11. April 2007 13:16

SilverX hat geschrieben:Oha. Mach doch einfach ne Fehlermeldung und gut ist 8-)


Keine Sorge, das habe ich schon getan, bevor ich meine Frage hier veröffentlicht habe ;-)

Ich hatte nur gehofft, es gäbe hierfür eine einfache Lösung.
Hat jemand von euch vielleicht schon einmal probiert, die Buttons auf der Requestform manuell nachzufügen und sie so im OnPush-Trigger mit einer Funktion zu belegen?

11. April 2007 13:36

Da man die Buttons beim Design nicht sieht, kommt man auch nicht an die Trigger.
Ich hätte aber einen Vorschlag:
Im Onpredataitem des ersten DataItems prüfst du den Inhalt der Felder.
Wenn was fehlt, kannst du entweder über einen InputDialog die fehlenden oder falsch ausgefüllten Felder abfragen, bis sie richtig sind, was allerdings auffällt, da die Designmöglichkeiten etwas beschränkt sind.
Oder du baust eine Form, die genauso aussieht, wie die Requestform, und lässt diese Anzeigen

11. April 2007 13:48

Danke Michael (auch wenn deine Lösungsvorschläge aus best. Gründen hier ausscheiden).

Ich komme trotzdem nicht darüber hinweg, dass sich eine solch simple Anforderung nicht ebenso simpel umsetzen lässt *schnüff*.