Oktober 20, 2020, 10:25:32

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Formular schließen ohne speichern

Begonnen von Hanghuhnjäger, Oktober 11, 2020, 23:32:16

⏪ vorheriges - nächstes ⏩

Hanghuhnjäger

Oktober 11, 2020, 23:32:16 Letzte Bearbeitung: Oktober 11, 2020, 23:57:55 von Hanghuhnjäher Grund: Ergänzung
Hallo zusammen!

Mit Office 2010 Pro habe ich folgendes Problem:

Wenn ich ein Formular MeinHF (PopUp & gebunden) für Testzwecke 'direkt' öffne und im enthaltenen UF MeinUF die Sortierreihenfolge ändere,
kann ich das Formular ohne jegliche Access-Meldungen schließen.

Dieses (und andere Formulare) ist aber für die Alltagsnutzung in ein Navigationsformular eingebettet.
Wenn ich das Formular über die entsprechende Navigationsschaltfläche öffne, im UF die Sortierreihenfolge ändere und dann über eine Navigationsschaltfläche ein anderes Formular aufrufe, erhalte ich die nett gemeinte, aber ungewollte Abfrage 'Möchten Sie die am Entwurf von Formular MeinUF vorgenommenen Änderungen speichern?'.

Ich möchte Access nicht mit der groben Kelle DoCmd.SetWarnings False komplett stummschalten!

Leider habe ich kein Event gefunden, welches vor Ausgabe der Meldung eintritt, über welches ich MeinUF speichern und somit die Abfrage abfangen kann.

Bleibt mir nur der Weg über die MouseMove-Events oder gibt es einen besseren Weg?

Dank & Gruß

Dirk

P.S.: Dazu kommt noch, dass Access dass UF nicht als geöffnet betrachtet; wenn ich ein Speichern aus dem Navigationsformular heraus mittels DoCmd.Save acForm, Me.Controls("frm_UF").Controls("frm_UF").SourceObject versuche, erhalte ich die Meldung Das MeinUF-Objekt ist nicht geöffnet.
Beste Grüße aus Ratingen
Dirk

DF6GL

Hallo,


ZitatWenn ich das Formular über die entsprechende Navigationsschaltfläche öffne, im UF die Sortierreihenfolge ändere


wie wird denn hier die Sortierreihenfolge geändert?

Zitatüber welches ich MeinUF speichern
Ich befürchte, das Form wird in der Entwurfsansicht geöffnet. Hier erhebt sich die Frage:  Warum? Welches Konzept steckt da dahinter?

ZitatDazu kommt noch, dass Access dass UF nicht als geöffnet betrachtet; wenn ich ein Speichern aus dem Navigationsformular heraus mittels


Das UF (das HFO im Navigationsformular) ist auch nicht geöffnet, es wird mit einem UFO-Steuerelement lediglich als separate Instanz angezeigt und ist demzufolge (für Access) nicht geöffnet.



Zitatgibt es einen besseren Weg?

Wenn Du erklärst, was Du insgesamt bezwecken willst, dann finden wir einen...

Hanghuhnjäger

Hallo,

Zitat von: DF6GL am Oktober 12, 2020, 08:08:23wie wird denn hier die Sortierreihenfolge geändert?
sorry, vergessen zu erwähnen:
Standardansicht UFO: Datenblatt
Sortieren & Filtern mittels Kopfzeile
Diese individuellen Einstellungen sind erforderlich zur Nachverfolgung von Vorgängen verschiedener Personen nach unterschiedlichen Kriterien.

Zitat von: DF6GL am Oktober 12, 2020, 08:08:23Ich befürchte, das Form wird in der Entwurfsansicht geöffnet. Hier erhebt sich die Frage:  Warum? Welches Konzept steckt da dahinter?
Dem UFO des Navigationsformulars wird die Datensatzquelle ausschließlich mittels Navigationsschaltfläche zugewiesen,
ein vergessenes acDesign scheidet somit (IMHO) aus.

Zitat von: DF6GL am Oktober 12, 2020, 08:08:23Das UF (das HFO im Navigationsformular) ist auch nicht geöffnet, es wird mit einem UFO-Steuerelement lediglich als separate Instanz angezeigt und ist demzufolge (für Access) nicht geöffnet.
OK, das leuchtet ein.

Zitat von: DF6GL am Oktober 12, 2020, 08:08:23Wenn Du erklärst, was Du insgesamt bezwecken willst, dann finden wir einen...
Prima, das macht Hoffnung!
Ziel: Entweder vermeiden, dass die Abfrage erfolgt oder die Abfrage mittels Event abfangen und per VBA die Änderung speichern/verwerfen & die Datensatzquelle ändern.

BTW, das Verhalten ist gar nicht so ungewöhnlich:
  • Der Vorgänger der Datenbank enthält ein Formular mit einem Registersteuerelement,
    die verschiedenen Seiten enthalten ein UFO mit einer Abfrage als Herkunftsobjekt.
  • Die neue DB enthält ein Navigationsformular,
    das UFO enthält ein Formular mit UFO mit einem Formular als Herkunftsobjekt.
  • In der alten DB erfolgt die Speichern-Abfrage, wenn das Formular geschlossen wird,
    in der neuen DB, wenn dem Navigationsformular-UFO über eine Navigationsschaltfläche eine neue Datensatzquelle zugewiesen wird.

Dank & Gruß
Beste Grüße aus Ratingen
Dirk

Beaker s.a.

@Hanghuhnjäger
Zitatin der neuen DB, wenn dem Navigationsformular-UFO über eine Navigationsschaltfläche eine neue Datensatzquelle zugewiesen wird.
Ja, weil zu diesem Zeitpunkt das aktuell geöffnete Form geschlossen
wird. Das Navi-Form zeigt ja immer nur ein Form an.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

DF6GL

Oktober 12, 2020, 20:31:54 #4 Letzte Bearbeitung: Oktober 12, 2020, 20:37:32 von DF6GL
Hallo,

das ist alles mysteriös.

Die Filterung und Sortierung mittels Dropdown-Menüs in der Kopfzeile bei der Datenblattansicht wird IMHO nicht gespeichert (Bin mir jetzt nicht sicher, ich habe diese Methode nur selten verwendet).  Die Speicher-Meldung hat vermutlich eine andere Ursache..

Kannst Du die Db oder eine Beispiel-Db hier hochladen, an der man das nachvollziehen kann?


PS:

Zitatwenn dem Navigationsformular-UFO über eine Navigationsschaltfläche eine neue Datensatzquelle zugewiesen wird.

Das ist vermutlich falsch ausgedrückt. Es wird keine Datensatzquelle (Datenherkunft) zugewiesen, sondern ein neues "Quellobject" (SourceObject) in Form eines Formularnamens. (Falls die Navi-Schaltfläche standardmäßig benutzt wird und nicht eine Klick-Prozedur bemüht.)

Prinzipiell sollte man sich nicht auf eine automatische Speicherung der aktuellen Einstellungen über diese Dropdown-Menüs verlassen.

Man könnte, wenn es nützt, natürlich mit SetWarnings True/False temporär arbeiten.


Ein Nachsehen und Einstellen in den Optionen in Bezug auf "Warnungen" könnte evtl. hilfreich sein.

Hanghuhnjäger

Zitat von: DF6GL am Oktober 12, 2020, 20:31:54Kannst Du die Db oder eine Beispiel-Db hier hochladen, an der man das nachvollziehen kann?
Aber gerne:
Sie dürfen in diesem Board keine Dateianhänge sehen.

Ich habe eine Beispiel-DB zusammengekloppt (das Original hat zu viel Ballast), aber das Prinzip meiner DB wird abgebildet. In meiner DB sind die Herkunftsobjekte der UFOs grundsätzlich Formulare, in dieser Beispiel-DB habe ich versuchsweise beides eingesetzt: Formular ('Buchstaben') und Abfrage ('Ziffern').

zu frmTab:
  • frmTab enthält ein Registersteuerelement mit drei Seiten.
  • Auf der Seite Main werden Vorgänge angelegt.
  • Auf den Seiten Buchstaben (enthält UFO ufo_Buchstaben mit Herkunftsobjekt frmBuchstaben)
    und Ziffern (enthält UFO ufo_Ziffern mit Herkunftsobjekt qryZiffern)
    können die angelegten Vorgänge ausgewertet und nachverfolgt werden.
  • Bei Änderung der Sortierreihenfolge auf den Seiten Buchstaben bzw. Ziffern passiert beim Wechsel der Seiten nichts;
    die Abfrage, ob die Änderungen gespeichert werden sollen, erfolgt erst beim Schließen von frmTab.
Soweit logisch, die Herkunftsobjekte sind ja auch nach dem Seitenwechsel noch geöffnet.

jetzt zu frmNavi:
  • frmNavi enthält 3 Navigationsschaltflächen & das UFO ufo_Formulare.
  • Über die Navigationsschaltflächen Main, Buchstaben bzw. Ziffern wird dem UFO das entsprechende SourceObject zugewiesen.
  • Bei Änderung der Sortierreihenfolge auf den Seiten Buchstaben bzw. Ziffern erfolgt die Abfrage, ob die Änderungen gespeichert werden sollen, bereits bei Zuweisung eines neuen SourceObjects zum UFO ufo_Formulare.
Auch das ist logisch, leider kommen sich die Fürsorge von Access und mein Empfinden dessen, was nützlich ist, in die Quere...

Zitat von: DF6GL am Oktober 12, 2020, 20:31:54Das ist vermutlich falsch ausgedrückt.
In der Tat: Mein Fehler!

Zitat von: DF6GL am Oktober 12, 2020, 20:31:54Man könnte, wenn es nützt, natürlich mit SetWarnings True/False temporär arbeiten.
Das wäre der letzte Ausweg, da ich die Warnings ungerne komplett abwürgen möchte...
Mein Problem in Zusammenhang mit der Betätigung der Navigationsschaltflächen ist, dass ich kein Event finde, mittels dessen ich der Speicher-Abfrage zuvorkommen und diese somit verhindern kann.

Zitat von: DF6GL am Oktober 12, 2020, 20:31:54Ein Nachsehen und Einstellen in den Optionen in Bezug auf "Warnungen" könnte evtl. hilfreich sein.
Da stehe ich auf dem Schlauch?

OK, ich mache Feierabend und widme mich dem Fußball,
schönen Abend allen!!!
Beste Grüße aus Ratingen
Dirk

Beaker s.a.

Hallo Dirk,
Zitatdass ich kein Event finde, mittels dessen ich der Speicher-Abfrage zuvorkommen und diese somit verhindern kann.
Versuche es bei "Form_Unload" des aktuell angezeigten Forms.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

Hanghuhnjäger

Hallo Ekkehard,

die Abfrage erfolgt vor dem Unload-Event, vor Deactivate bzw. Close sowieso.

Ich verstehe halt nicht, warum überhaupt eine Abfrage erfolgt? Die Abfragen
Möchten Sie die am Entwurf von Formular 'frmBuchstabenUF' vorgenommenen Änderungen speichern?bzw.
Möchten Sie die am Entwurf von Abfrage 'qryZiffern' vorgenommenen Änderungen speichern?sollten doch voraussetzen, dass die entsprechenden Objekte im Entwurfsmodus geöffnet sind?

Bei frmTab ist es übrigens sehr seltsam:
  • Änderung der Sortierreihenfolge auf beiden Tabs: Abfrage bzgl. qryZiffern und frmBuchstabenUF (wie erwartet)
  • Änderung der Sortierreihenfolge auf Tab 'Ziffern': Abfrage bzgl. qryZiffern (immer noch wie erwartet)
  • Änderung der Sortierreihenfolge auf Tab 'Buchstaben': keine Abfrage (erfolgt offensichtlich nur, wenn auch auf Tab 'Ziffern' geändert wurde)

Hilft mir allerdings nicht weiter, da ich frmTab lediglich zum Vergleich Registersteuerelement/Navigationsformular erstellt habe...
Beste Grüße aus Ratingen
Dirk

Hanghuhnjäger

Na also, geht doch: Das Enter-Ereignis des Navigationssteuerelements wird VOR der Abfrage ausgelöst...

In der entsprechenden Prozedur die OrderBy-Eigenschaft auf den Wert vbNullString setzen (Ordnung muss sein) und die sonst trotzdem erscheinende Abfrage mittels
DoCmd.SetWarnings Falseunterdrücken.

Dann die Warnings mittels einer Funktion, welche dem Open-Ereignis der Formulare zugewiesen wird, direkt wieder aktivieren, feddich!

Rätselhaft bleibt, warum überhaupt das Speichern am Entwurf abgefragt wird...
Beste Grüße aus Ratingen
Dirk