keine automatische Speicherung --> Speicherungsabfrage
Hallo zusammen,
ch brauche mal eure kompente Hilfe .
Und zwar habe ich ein Formular wo man Daten zu Mitarbeitern einträgt. Ich möchte jetzt, dass bevor das Formular geschlossen wird eine Abfrage kommt, ob die Änderungen gespeichert werden sollen oder nicht.
Momentan speichert Access alles automatisch. Doch das will ich nicht.
Könnt ihr mir sagen, wie ich das mit einem vb-code schreiben kann.
danke,
Mfg
AMKD
Antwort schreiben
Antwort 1 von Teddy7 vom 06.03.2019, 07:55 Options
2 Möglichkeiten:
entweder direkt auf dem Formular mit ungebundenen Feldern arbeiten und einen extra Befehlsbutton dazulegen, der dann die Daten speichert (also per VBA-Coding den Datensatz liest, editiert, ändert und updated.
Oder in einem geeigneten Ereignis per Inputbox-befehl abfragen, ob speichern oder nicht und wenn nicht dann den Befehl docmd.undo absetzen.
Gruß
Teddy
Antwort 2 von AMKD vom 06.03.2019, 12:55 Options
Hallo Teddy,
ja, ich möchte ein extra Befehlsbutton anlegen und diesen dann mit einem Vb-code versehen. Doch wie heißen die Befehle. Kannst du mir da helfen?
Dim antwort
antwort = MsgBox("Möchten Sie den Datensatz wirklich speichern?", vbYesNo + vbCritical, "DS speichern")
If antwort = vbYes Then
......
weiter weiß ich nicht
Antwort 3 von Teddy7 vom 06.03.2019, 13:47 Options
z.B.:
Dim ttab1 As DAO.Recordset
Dim ktab1 as string
Set ttab1 = CurrentDb.OpenRecordset("Select * from tblKunden", dbOpenDynaset)
ktab1 = "Schlüssel = " & Schlüsselfeld
ttab1.findfirst ktab1
if ttab1.nomatch = true then
ttab1.addnew
else
ttab1.edit
end if
ttab1!Feld1 = txtFeld1
....usw.... 'Autowert nicht befüllen
ttab1.update
ttab1.Close
Set ttab1 = Nothing
und nicht vergessen den Verweis auf Microsoft DAO zu setzen.
Gruß
Teddy
Antwort 4 von Proggi vom 06.03.2019, 13:57 Options
Private Sub Form_BeforeUpdate(Cancel As Integer)
If MsgBox("speichern?", vbYesNo) = vbNo Then Cancel = 1
End Sub
Antwort 5 von Proggi vom 06.03.2019, 13:59 Options
p.s. es gibt kein Ja/Nein/Abbrechen an der stelle da man den datensatz einfach nicht verläßt...
du müstest einfach die ESC-Taste drücken um die änderungen zu verwerfen oder machst einen Knopf der das macht. Du kommst solange du auf "Nein" klickst einfach nicht aus den datensatz raus.
Antwort 6 von AMKD vom 06.03.2019, 14:53 Options
Hallo teddy und proggi,
danke für eure Tipps.
Ich habe jetzt folgendes geschrieben:
Private Sub speichern_Click()
If vbNo = MsgBox("Möchten Sie speichern?", vbQuestion + vbYesNo, "Frage") Then
Cancel = True
Me.Undo
DoCmd.Close
Else
DoCmd.Save acForm, "Hauptformular"
DoCmd.Close
End If
End Sub
... und es funktioniert.
Mein Problem ist aber noch, das ich in meinem Formular Unterformulare als Registerkarten eingefügt habe und der VB-Code nur bei den Daten im Hauptformular funktioniert.
Bei den Unterfromularen speichert es immernoch auto. wenn ich was ändere.
Könnt ihr mir sagen, wie ich das hin bekomme, das die Speicherabfrage auch auf die Unterformulare übernommen wird.
danke,
MFG
AMKD