Discussion:
MsgBox: Ja Nein Abbrechen
(zu alt für eine Antwort)
Markus Streich
2003-10-27 15:39:56 UTC
Permalink
Guten Tag allerseits

Ich möchte, bevor ein Datensatz geupdated wird, eine Sicherheitsabfrage
einbauen. Es gibt drei Möglichkeiten:
- Update ausführen
- Änderungen verwerfen (die selbe Wirkung wie das Drücken der ESC-Taste)
- Zurück zum Datensatz

Ich habe dazu mal folgendes Gerüst erstellt:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Select Case MsgBox("Sollen Ihre Änderungen gespeichert werden?", 512 +
48 + 3)
Case 6 'Ja
Case 7 'Nein
Case 2 'Abbrechen
End Select
End Sub

Leider sind meine VB-Kenntnisse äusserst bescheiden und weiss nicht mehr
weiter.

Kann mir jemand weiter helfen. Vielen Dank.

Markus
Karl Donaubauer
2003-10-27 15:41:07 UTC
Permalink
Post by Markus Streich
Ich möchte, bevor ein Datensatz geupdated wird, eine Sicherheitsabfrage
- Update ausführen
- Änderungen verwerfen (die selbe Wirkung wie das Drücken der ESC-Taste)
- Zurück zum Datensatz
Private Sub Form_BeforeUpdate(Cancel As Integer)
Select Case MsgBox("Sollen Ihre Änderungen gespeichert werden?", 512 +
48 + 3)
Case 6 'Ja
Case 7 'Nein
Case 2 'Abbrechen
End Select
End Sub
Leider sind meine VB-Kenntnisse äusserst bescheiden und weiss nicht mehr
weiter.
Access-FAQ 4.32 Rückfrage vor dem Speichern
--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
Henry Habermacher [MVP Access]
2003-10-28 02:45:47 UTC
Permalink
Hallo Markus
Post by Markus Streich
Ich möchte, bevor ein Datensatz geupdated wird, eine
- Update ausführen
- Änderungen verwerfen (die selbe Wirkung wie das Drücken der ESC-Taste)
- Zurück zum Datensatz
Private Sub Form_BeforeUpdate(Cancel As Integer)
Select Case MsgBox("Sollen Ihre Änderungen gespeichert werden?",
512 + 48 + 3)
Case 6 'Ja
Case 7 'Nein
Case 2 'Abbrechen
End Select
End Sub
ungetestet:

Private Sub Form_BeforeUpdate(Cancel as Integer)
Select Case MsgBox("Sollen Ihre Änderungen gespeichert werden?",
vbquestion + vbyesnocancel + vbdefaultbutton2)
case vbno
me.undo
cancel = true
exit sub
case vbcancel
cancel = true
exit sub
case vbyes
exit sub
end select
End Sub

HTH
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/FAQ/FAQStart.htm
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Markus Streich
2003-10-28 14:25:31 UTC
Permalink
Hallo Henry
Post by Henry Habermacher [MVP Access]
Hallo Markus
Post by Markus Streich
Ich möchte, bevor ein Datensatz geupdated wird, eine
- Update ausführen
- Änderungen verwerfen (die selbe Wirkung wie das Drücken der ESC-Taste)
- Zurück zum Datensatz
Private Sub Form_BeforeUpdate(Cancel As Integer)
Select Case MsgBox("Sollen Ihre Änderungen gespeichert werden?",
512 + 48 + 3)
Case 6 'Ja
Case 7 'Nein
Case 2 'Abbrechen
End Select
End Sub
Private Sub Form_BeforeUpdate(Cancel as Integer)
Select Case MsgBox("Sollen Ihre Änderungen gespeichert werden?",
vbquestion + vbyesnocancel + vbdefaultbutton2)
case vbno
me.undo
cancel = true
exit sub
case vbcancel
cancel = true
exit sub
case vbyes
exit sub
end select
End Sub
HTH
Henry
Vielen Dank, es funktioniert. Ich habe es noch etwas verfeinert:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty Then
Select Case MsgBox("Sollen Ihre Änderungen gespeichert werden?",
vbQuestion + vbYesNoCancel + vbDefaultButton2)
Case vbYes
Exit Sub
Case vbNo
Me.Undo
Cancel = True
Exit Sub
Case vbCancel
Cancel = True
Exit Sub
End Select
End If
End Sub

Grüsse
Markus
Paul Rohorzka
2003-10-28 16:40:26 UTC
Permalink
Hallo Markus!
Post by Markus Streich
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty Then
Tritt denn das Ereignis Form_BeforeUpdate überhaupt ein, wenn das
Formular nicht Dirty ist? Würde mich ehrlich gesagt wundern. Ich mache
es auch immer so, wie Henry geschrieben hat, und hatte noch nie den
Eindruck, dass die Meldung kommt, wenn nix abzuspeichern ist.

Ciao,
Paul
Henry Habermacher [MVP Access]
2003-10-29 00:10:52 UTC
Permalink
Hallo Markus
Post by Markus Streich
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty Then
Dann kannst Du auch noch:

If True = True OR 1 = 1 Or Me.Dirty = True Then

reinschreiben, ist alles überflüssig, da das BeforeUpdate Ereignis nur
anläuft, wenn das Formular Dirty ist.

Verfeinerung sehe ich darin keine ;-)

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/FAQ/FAQStart.htm
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Loading...