Autor Thema: Queryclose und "Wollen Sie speichern" = Nein  (Gelesen 3371 mal)

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Queryclose und "Wollen Sie speichern" = Nein
« am: 31.05.10 - 17:06:32 »
Hallo Forum,

leider weiß ich keine Lösung für folgendes Problem:

Ich habe eine Maske A, in der ich per Dialogbox eine zweite Eingabemaske B aufrufe, und dort Daten eingebe.
Damit ich vor verlassen der Dialogboxmaske auf korrekte Eingaben überprüfen kann, hab ich einige Überprüfungen im Queryclose eingebaut.

Klappt einwandfrei.

Nun kann ich im später die Eingabemaske B wieder aufrufen (Doppelklick aus Ansicht) und dort Werteänderungen vornehmen. Wenn ich nun diese Maske B wieder über das X im Reiter schliesse, habe ich ja die Auswahl, ob ich die Änderungen speichern möchte.

Wenn ich nun dort mit "Nein" bestätige, dann springt mir der Code ins Queryclose, und überprüft dort auf Falscheingaben, was aber durch die Bestätigung mit "Nein" ja eigentlich nicht nötig ist und zu unnötigen Meldungen führt.

Daher meine Frage:

Wie kann ich den Code im Queryclose umgehen, wenn ich beim Speichern mit "Nein" bestätige.
« Letzte Änderung: 01.06.10 - 15:41:25 von iukhdh »
Thomas von der IuK

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Queryclose und "Wollen Sie speichern" = Nein
« Antwort #1 am: 31.05.10 - 17:19:07 »
Wenn Du Deine Überprüfungen im Querysave durchführst, erfolgen die nur, wenn das Dokument gespeichert werden soll. Tritt ein Fehler auf, kannst Du mit Continue = False das Speichern abbrechen.

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Queryclose und "Wollen Sie speichern" = Nein
« Antwort #2 am: 31.05.10 - 17:28:24 »
Hallo Peter,

ich brauch die Überprüfungen im Queryclose, weil ich bei der Eingabe der Daten in der Dialogbox die Überprüfung durchführen möchte, BEVOR die Dialogbox geschlossen ist.

Wenn ich später mit dem X im Reiter schliesse, frage ich im Querysave auch was ab, und breche wie bei dir beschrieben ab. Wenn ich aber auf Speichern = Nein gehe, komm ich garnicht ins Querysave, was ja so auch OK ist, aber dummerweise ins Queryclose.

Da bräuchte ich eine Lösung um das zu umgehen. Oder eine Anregung wie ich es anders machen könnte, vielleicht denk ich auch nur quer ...  :-:
Thomas von der IuK

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Queryclose und "Wollen Sie speichern" = Nein
« Antwort #3 am: 31.05.10 - 17:33:08 »
Du könntest beim Aufruf der Dialogbox ein Feld in das Dokument schreiben (zumindest wenn Du die Dialogbox über Script aufrufst), und im Queryclose darauf reagieren (z.B. FlagDialogbox = "1"). Natürlich musst Du dann auch das Feld löschen bzw. nicht speichern, sonst "glaubt" das Dokument später, es sei eine Dialogbox.

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Queryclose und "Wollen Sie speichern" = Nein
« Antwort #4 am: 31.05.10 - 17:39:28 »
Hmm, an so ein Flag hab ich noch garnicht gedacht, das wäre eine Lösung.

Aber gibt es denn keine Möglichkeit abzufragen, ob ich bei der Speicherabfrage auf "Nein" gedrückt habe? Kann ich mir fast nicht denken, aber ich find dazu nix in der Hilfe oder hier im Forum.
Thomas von der IuK

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Queryclose und "Wollen Sie speichern" = Nein
« Antwort #5 am: 31.05.10 - 17:43:40 »
Du kannst umgekehrt prüfen, indem Du Dir eine globale Variable (z.B. Dim flagGespeichert As Integer) definierst, und diese im Querysave auf True setzt. Dann kannst Du im Queryclose abfragen ob das Dokument gespeichert wurde.

Was passiert im Queryclose, wenn Du das Dokument nur zum Lesen öffnest? Beachtest Du auch Source.EditMode?

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Queryclose und "Wollen Sie speichern" = Nein
« Antwort #6 am: 31.05.10 - 17:50:12 »
Wenn ich das Dokument nur zum Lesen öffne, dürfte es eigentlich keine Probleme geben, da ich an den Werten  ja nix ändere, und diese ja schon in der Dialogbox geprüft wurden. Aber ich weiß was du  meinst, muss ich mir anschauen.

Jetzt probier ich morgen mal mein Glück mit dem Flag.

Danke.
Thomas von der IuK

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Queryclose und "Wollen Sie speichern" = Nein
« Antwort #7 am: 31.05.10 - 17:55:38 »
Hier ein anderer Lösungsansatz (so arbeite ich bei Dialogboxen). Du rufst die Dialogbox im Script in einer Schleife auf (
Do While ...
If workspace.Dialogbox (........, dialogdoc) Then
), nach Schliessen führst Du Deine Überprüfung im aufrufenden Script auf, ist alles in Ordnung, verlässt Du die Schleife, wenn nicht, gibst Du eine Fehlermeldung aus (oder schreibst die Fehler in ein extra Fehlerfeld in der Dialogbox), und die Dialogbox öffnet sich wieder. Damit hast Du zwar den Effekt, dass die Dialogbox kurz geschlossen und danach wieder geöffnet wird, sparst Dir aber das Gehampel, was Du jetzt gerade machen musst.
« Letzte Änderung: 31.05.10 - 17:57:52 von Peter Klett »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Queryclose und "Wollen Sie speichern" = Nein
« Antwort #8 am: 31.05.10 - 18:03:23 »
Wenn ich das Dokument nur zum Lesen öffne, dürfte es eigentlich keine Probleme geben, da ich an den Werten  ja nix ändere, und diese ja schon in der Dialogbox geprüft wurden....

Wenn sich morgen an der Überprüfung etwas ändert (z.B. ein neues Feld kommt dazu), wird beim Schließen aller alten Dokumente, die dieses Feld nicht haben, eine Fehlermeldung ausgegeben.

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Queryclose und "Wollen Sie speichern" = Nein
« Antwort #9 am: 01.06.10 - 15:31:24 »
Hallo Peter,
da bin ich nochmal kurz.

Also dein Vorschlag mit dem Flag funktioniert einwandfrei. Da ich die Überprüfungen im Queryclose ja nur ein einziges Mal benötige (beim schliessen der Dialogbox) breche ich bei späteren Aufrufen die Abfragen im Queryclose einfach ab. Alles andere läuft dann im Querysave.

Deinen anderen Lösungsansatz probier ich bei Gelegenheit mal aus, da stehen noch einige andere Sachen an, die nicht so eilig sind wie diese gerade.

Danke für die Hilfe.
Thomas von der IuK

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Queryclose und "Wollen Sie speichern" = Nein
« Antwort #10 am: 01.06.10 - 15:51:31 »
Nur zur Vollständigkeit: Bei dem anderen Lösungsansatz sollte die Dialogbox mit einem temporären Dokument geöffnet werden, damit nicht schon Werte in das aktuelle Dokument zurückgeschrieben werden, bevor die Überprüfung stattgefunden hat. Also:

1. temporäres Dokument erstellen
2. relevante Felder aus dem Originaldokument hineinkopieren
3. Dialogbox mit temporärem Dokument öffnen
4. Prüfen und ggf. geänderte Felder in das Originaldokument zurückschreiben

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz