Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: cfiber am 09.11.05 - 08:17:43

Titel: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: cfiber am 09.11.05 - 08:17:43
Guten morgen!

in einem Dokument müssen in Feldern Angaben gemacht werden.


Fehlt in mind. einem Feld eine Angabe, so soll das Dokument nicht gespeichert werden und offen bleiben.

1. Das mit dem nicht-speichern habe ich im Querysave gelöst. (saveoptions = 0)
2. Das mit dem nicht-schliessen habe ich im Queryclose gelöst. (Continue = False)

Sobald die Angaben alle gemacht wurden, ist alles perfekt.

Problem:

Wenn der User das x oder "cancel" drückt tut sich nix mehr, denn Continue ist auf False. Mir fällt nichts ein, wie ich das auf True wieder setzen kann.



Hat da jemand eine Idee??


Danke....
Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: Axel am 09.11.05 - 08:23:57
Hi,

wieso fackelst du das Ganze nicht im QuerySave-Event ab?

Du überprüfst dort ob die betreffenden Felder entsprechend gesetzt sind. Wenn nicht, dann setzt du dort Continue auf False und das war's dann. SaveOptions brauchst du auch nicht und ebenfalls Continue=False im QueryClose-Event.


Axel
Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: cfiber am 09.11.05 - 08:31:38
hatte ich schon, aber so kommt noch das dumme "wanna save?" Fenster.

Prinzipiell funktioniert es ja, aber es ist halt "unelegant"...
Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: Axel am 09.11.05 - 08:37:10
Wann kommt das Fenster?

Ich setze diese Lösung in allen Datenbanken ein und hatte diesbezüglich noch nie Probleme.

Axel
Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: cfiber am 09.11.05 - 08:47:37
hier nen Auszug aus meinem Code:


Code
If doc.name(0) = "" Then
		Messagebox "Enter the name of the employee."
		Call Source.GotoField("name")
		Continue = False
End If


Nach der Messagebox kommt die Frage, ob ich speichern will. Wenn alles korrekt eingegeben wurde, setze ich Continue auch wieder auf True.
Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: Axel am 09.11.05 - 08:52:50
Hi,

versuch's mal so:

If doc.name(0) = "" Then
      Messagebox "Enter the name of the employee."
      Call Source.GotoField("name")
      Continue = False
                                Exit Sub
End If

Dann sollte Ruhe sein, denn dadurch wird die Ausführung des Events abgebrochen.

Axel
Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: cfiber am 09.11.05 - 08:57:01
Hatte ich auch schon probiert, das Fenster kommt trotzdem.


Ich bin auch im Querysave, versteh auch nicht, warum der zickt...
Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: Axel am 09.11.05 - 09:23:40
Hi,

ich glaube, ich hatte dich das schon mal gefragt. Wann wird das Fenster angezeigt?

Durchforste mal deine Maske, eventuell wird irgendwo noch mal ein Speichern ausgelöst.


Axel

Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: cfiber am 09.11.05 - 09:30:40
Ja nach der Messagebox (oben gesagt).

Der Debugger läuft bis zum Ende und dann kommt die Frage. Obwohl Continue auf False ist.
Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: Axel am 09.11.05 - 09:44:30
Auch wenn du Exit Sub einfügst?

Axel
Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: cfiber am 09.11.05 - 09:54:43
die Zeile Continue = False steht am Ende, macht es einen Unterschied, wenn ich da noch Exit Sub vor End Sub schreibe?
Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: Axel am 09.11.05 - 10:15:18
Wenn danach nichts mehr kommt macht es keinen Unterschied. Sehr mysteriös das Ganze.

Wie sieht denn der Code im QuerySave-Event aus? Gibt es noch andere Ecken wo ein Save oder Close ausgelöst werden kann?


Axel
Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: cfiber am 09.11.05 - 10:35:01
mein code:


Code
If doc.name(0) = "" Then
		Messagebox "Enter the name of the employee."
		Call Source.GotoField("name")
		Goto dontsave
	End If
'andere Sachen, die übersprungen werden
dontsave:
	Continue = False
End Sub
Titel: Re: dokument nicht schliessen, wenn Eingaben noch fehlen
Beitrag von: Axel am 09.11.05 - 12:09:14
Hi,

rein gefühlsmässig sollte das funktionieren. Allerdings ist die Verwendung von Gotos nicht unbedingt ein guter Programmierstil. Man sollte die goto-Anweisung nur dort verwenden, wo es sich unter keinen Umständen vermeiden lässt.

Darum würde ich das Ganze so machen:

Code
If doc.name(0) = "" Then
  Messagebox "Enter the name of the employee."
  Call Source.GotoField("name")
  Continue = False
  Exit Sub
End If

'andere Sachen, die übersprungen werden

End Sub


Das Problem was ich bei deinem Code sehe, ist, das eigentlich gar nicht gespeichert wird. Denn auch wenn das Feld gefüllt ist, am Ende des Events Continue aud False gesetzt wird.

Axel