Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Schaltfläche zum Textfelder überprüfen, Datensatz speichern, Formularoperation

Begonnen von Damien, November 28, 2016, 10:53:08

⏪ vorheriges - nächstes ⏩

DF6GL

Hallo,

etwa so:

Option Compare Database
Option Explicit



Private Sub cmdClose_Click()
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "frmHome"
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)

If IsNull(Me!txtCreateCompanyName) Then
    MsgBox "Company name required", vbOKOnly
    Me!txtCreateCompanyName.SetFocus
Cancel = True
End If

If Not Cancel Then
Cancel = MsgBox("Speichern?", vbYesNo) = vbNo
End If


End Sub



Damien

Hey,

nach wie vor schließt sich das Formular, wenn ich auf Speichern? -> Nein klicke.   :-\

MzKlMu

Hallo,
das Schließen des Formulars musst Du aktiv verhindern. Und dazu kann nur das Ereignis "Beim Entladen" verwendet werden, weil es nur dort den Parameter Cancel gibt.

Das kannst Du alles in meinem Beispiel in #2 nachvollziehen.
Gruß Klaus

Damien

Also wenn ich das richtig verstanden habe, sorgt die Form_Unload Funktion dafür, dass der Anwender Access nicht versehentlich schließen kann.
Das ist aber nicht mein Ziel, ich werde leider aus dem #2 nicht all zu schlau, meine VBA Kenntnisse sind ziemlich begrenzt.

Private Sub cmdClose_Click()
DoCmd.RunCommand acCmdSaveRecord
End Sub


Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(Me!txtCreateCompanyName) Then
    MsgBox "Company name required", vbOKOnly
    Me!txtCreateCompanyName.SetFocus
Cancel = True
End If
End Sub


Sub Form_Afterupdate()
DoCmd.Close acForm, Me.Name
MsgBox "Profile has been saved successfully", vbOKOnly
DoCmd.OpenForm "frmHome"
End Sub


Das ist jetzt mein Code, ich habe mich jetzt gegen die Messagebox (vbYesNo) vor dem speichern entschieden und dafür eine vbOkOnly eingebaut, die das speichern nach dem schließen bestätigt.
Das Problem ist, dass wenn das Pflichtfeld nicht ausgefüllt ist, der Laufzeitfehler 3021 auftaucht.

Wie kann ich den Close-Vorgang abbrechen um das entsprechende Pflichtfeld zu ergänzen und den Laufzeitfehler umgehen?
Es fällt mir schwer das aus deiner, auf meine DB zu übertragen Klaus.  :-\


Edit: Ich habe "On error resume next" an allen möglichen Stellen eingebaut, aber das hat nicht funktioniert.