Schließen und Abfrage

12/06/2009 - 14:31 von Patrick Jox | Report spam
Hallo zusammen,
ich möchte ein Formular per Code schließen und dabei fragen ob die Daten
gespeichert werden sollen oder nicht. Grundsàtzlich kann ich das ja in er
Klick-Prozedur des Buttons. Soweit kein Problem. Nun soll die Frage aber
auch kommen, wenn das Formular über den CloseButton des Formulars bzw.
Alt-F4 geschlossen wird.

Also hànge ich mich in die BeforeUpdate-Prozedur mit folgendem Code rein.

Private Sub Form_BeforeUpdate(Cancel As Integer)

Select Case MsgBox("Änderung speichern?", vbYesNoCancel)
Case vbYes
'es wird gespeichert
Case vbNo
'Die Änderungen werden verworfen
Me.Undo
Cancel = True
Case vbCancel
'es wird nicht gespeichert, Daten bleiben aber erhalten
Cancel = True
End Select

End Sub

Das scheint mir ja durchaus Stand der Technik zu sein und funktioniert bis
auf das Cancel ja auch. Setzt ich Cancel auf True, dann wird der Code
nochmal durchlaufen. Ich werde nochmal gefragt ob ich speichern will und
beim erneuten Abbrechen bekomme ich folgenden Fehler:

"Sie können diesen Datensatz momentan nicht Speichern

Möglicher Fehler in Microsoft Office Access beim Versuch, einen Datensatz zu
speichern. Wenn Sie dieses Objekt jetzt schließen, gehen die von Ihnen
vorgenommenen Änderungen verloren..."

Das Formular hàngt nicht direkt auf einer Tabelle sondern auf einer Query
mit der ein Display-Name angezeigt wird. Der Displayname wird in einem
berechneten Feld im Formularkopf angezeigt. So wie im Beispiel der
Kontakt-Datenbank. Allerdings wird der Displayname noch über eine eigene
Query berechnet, weil ich den Wert an vielen Stellen zur Darstellung
brauche. Was auffàllt ist, dass dieser Wert nach dem Klick auf Abbrechen in
den Fehlermodus (#Fehler) geht.

Was mache ich falsch?

Danke für Eure Hilfe

Viele Grüße
Patrick
 

Lesen sie die antworten

#1 Peter Doering
12/06/2009 - 15:09 | Warnen spam
Hallo,

Patrick Jox wrote:

ich möchte ein Formular per Code schließen und dabei fragen ob die Daten
gespeichert werden sollen oder nicht. Grundsàtzlich kann ich das ja in er
Klick-Prozedur des Buttons. Soweit kein Problem. Nun soll die Frage aber
auch kommen, wenn das Formular über den CloseButton des Formulars bzw.
Alt-F4 geschlossen wird.

Also hànge ich mich in die BeforeUpdate-Prozedur mit folgendem Code rein.

Private Sub Form_BeforeUpdate(Cancel As Integer)

Select Case MsgBox("Änderung speichern?", vbYesNoCancel)
Case vbYes
'es wird gespeichert
Case vbNo
'Die Änderungen werden verworfen
Me.Undo
Cancel = True
Case vbCancel
'es wird nicht gespeichert, Daten bleiben aber erhalten
Cancel = True
End Select

End Sub

Das scheint mir ja durchaus Stand der Technik zu sein und funktioniert bis
auf das Cancel ja auch. Setzt ich Cancel auf True, dann wird der Code
nochmal durchlaufen. Ich werde nochmal gefragt ob ich speichern will und
beim erneuten Abbrechen bekomme ich folgenden Fehler:

"Sie können diesen Datensatz momentan nicht Speichern
[...]
Was mache ich falsch?



Am geposteten Code jedenfalls nichts. Bei mir laeuft der einwandfrei. Gibt
es evtl. weitere Manipulationen in anderen Ereignissen?

Gruss - Peter

Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen