Discussion:
Formulare und Unterformulare auf Änderungen prüfen
(zu alt für eine Antwort)
S***@gmx.de
2005-08-30 06:56:42 UTC
Permalink
Hallo,

ich habe in einer Datenbank mehrere Formulare, die ich mit der
folgenden Abfrage auf Änderungen überprüfe:

If Me.Dirty Then
If MsgBox("Wollen Sie die Änderungen speichern?", vbQuestion +
vbYesNo, "Änderungen speichern") = vbYes Then
DoCmd.Close
Else
Me.Undo
End If
Else
DoCmd.Close
End If

Diese Abfrage wird aufgerufen, wenn ich den "Schließen"-Button
betätige, der bei mir auf jedem Formular vorhanden ist. Sie
funktioniert einwandfrei, so wie ich es haben will.

Ich stehe jetzt vor dem Problem, dass in den Formularen auch noch
teilweise mehrere Unterformulare vorhanden sind.
Zum einen habe ich bislang keinen Weg gefunden, wie ich diese
Unterformulare mit "[Unterformularname].Dirty" auf Änderungen abfragen
kann und zum anderen werden mit dem Fokusverlust im Hauptformular beim
Wechsel in ein Unterformular alle Änderungen ohne Nachfrage
übernommen.

Gibt es eine Möglichkeit, in einem Abwasch ein Formular inkl. aller
Unterformulare auf Änderungen abzufragen?

Vielen Dank im Voraus für jede Hilfe!!!

MfG

Stephan Kremer
Mark Doerbandt
2005-08-30 07:13:23 UTC
Permalink
Hallo,

***@gmx.de:

Bitte trage da, wo jetzt "***@gmx.de" steht, doch "Stephan
Kremer" ein.
Post by S***@gmx.de
Zum einen habe ich bislang keinen Weg gefunden, wie ich diese
Unterformulare mit "[Unterformularname].Dirty" auf Änderungen abfragen
kann und zum anderen werden mit dem Fokusverlust im Hauptformular beim
Wechsel in ein Unterformular alle Änderungen ohne Nachfrage
übernommen.
Versuche

Me!DeinUnterformular.Form.Dirty = False

Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.
Stephan Kremer
2005-08-30 07:56:50 UTC
Permalink
Hallo Mark,

leider funktioniert dein Vorschlag nicht :-(

Nach Me!<Unterformular>.Form werden keine Methoden zur Auswahl
angeboten.
Also habe ich einfach so hinter Form das .Dirty gesetzt. Der Compiler
meckert dabei auch nicht, nur beim Debuggen sehe ich, dass die
Bedingung in der If-Abfrage nie erfüllt ist.

Trotzdem vielen Dank für deine Hilfe!!!

Gruß,

Stephan
Mark Doerbandt
2005-08-30 08:02:59 UTC
Permalink
Hallo, Stephan,
Post by Stephan Kremer
Nach Me!<Unterformular>.Form werden keine Methoden zur Auswahl
angeboten.
Das ist normal. IntelliSense ist leider an der Stelle, wo
![Bezeichner] ins Spiel kommt, nicht immer so schlau, gleich zu
ermitteln, was denn da fuer ein Objekt hinter steht.
Post by Stephan Kremer
Also habe ich einfach so hinter Form das .Dirty gesetzt. Der Compiler
meckert dabei auch nicht, nur beim Debuggen sehe ich, dass die
Bedingung in der If-Abfrage nie erfüllt ist.
Wahrscheinlich hast Du durch den Fokusverlust im Ufo bereits ein
Update, so dass das Ufo niemals .Dirty ist, wenn Deine
Ereignisprozedur gefeuert wird. Teste mal in BeiFokusverlust des Ufos.

Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.
Stephan Kremer
2005-08-30 08:22:56 UTC
Permalink
Hallo Mark,

du hast Recht was die Updates angeht. Sobald ich vom Unterformular
zurück in das Hauptformular und umgekehrt wechsel, werden die Tabellen
automatisch aktualisiert.
Das hilft mir zwar nicht wirklich weiter, hat das ganze aber auf ein
Problem reduziert:

Gibt es einen Weg um diese automatischen Updates beim Fokusverlust zu
verhindern und manuell beim Betätigen eines Buttons alle Änderungen
aus Hauptformular und Unterformularen zu speichern?

Gruß,

Stephan
Mark Doerbandt
2005-08-30 08:37:35 UTC
Permalink
Hallo, Stephan,
Post by Stephan Kremer
Gibt es einen Weg um diese automatischen Updates beim Fokusverlust zu
verhindern und manuell beim Betätigen eines Buttons alle Änderungen
aus Hauptformular und Unterformularen zu speichern?
Nein, das ist die "eingebaute Mechanik" der Access-Formulare - Du
kannst hoechstens beim Fokusverlust nachfragen, ob gespeichert werden
soll. Ansonsten wird es wohl umstaendlicher, weil Du Dir die
Aenderungshistorie merken muesstest und dann ggf. eine Art Rollback
machen musst.

Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.
Stephan Kremer
2005-08-30 08:41:40 UTC
Permalink
Hallo Mark,

genau das habe ich befürchtet ;-)

Eine Änderungshistorie mit Rollback ist für meine Bedürfnisse aber
den Aufwand nicht wert.

Vielen Dank für deine Hilfe!!!

Gruß,

Stephan
Stefan Dase
2005-08-30 10:27:42 UTC
Permalink
Hallo Stephan!
Post by S***@gmx.de
Zum einen habe ich bislang keinen Weg gefunden, wie ich diese
Unterformulare mit "[Unterformularname].Dirty" auf Änderungen abfragen
kann und zum anderen werden mit dem Fokusverlust im Hauptformular beim
Wechsel in ein Unterformular alle Änderungen ohne Nachfrage
übernommen.
Kannst du das nicht im Unterformular vor dem Update prüfen, Ereignis:
"BeforeUpdate"?

HTH,
Stefan
Stephan Kremer
2005-08-30 13:21:37 UTC
Permalink
Hi Stefan,

danke für deine Antwort, aber im Grunde hat sich die ganze Sache für
mich schon erledigt.
Da ich das automatische Update beim Fokusverlust nicht ohne riesigen
Aufwand verhindern kann (siehe vorherige Posts), habe ich meine Pläne
schon wieder verworfen ;-)

Gruß,

Stephan

Loading...