Autor Thema: dokument nicht schliessen, wenn Eingaben noch fehlen  (Gelesen 3060 mal)

Offline cfiber

  • Frischling
  • *
  • Beiträge: 46
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....

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #1 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline cfiber

  • Frischling
  • *
  • Beiträge: 46
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #2 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"...

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #3 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline cfiber

  • Frischling
  • *
  • Beiträge: 46
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #4 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.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #5 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline cfiber

  • Frischling
  • *
  • Beiträge: 46
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #6 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...

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #7 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

Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline cfiber

  • Frischling
  • *
  • Beiträge: 46
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #8 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.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #9 am: 09.11.05 - 09:44:30 »
Auch wenn du Exit Sub einfügst?

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline cfiber

  • Frischling
  • *
  • Beiträge: 46
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #10 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?

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #11 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline cfiber

  • Frischling
  • *
  • Beiträge: 46
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #12 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

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: dokument nicht schliessen, wenn Eingaben noch fehlen
« Antwort #13 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz