Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: derilzemer am Juli 21, 2017, 19:57:32

Titel: Pflichtfeld Standardwert - MsgBox unterdrücken wenn Form geschlossen wird
Beitrag von: derilzemer am Juli 21, 2017, 19:57:32
Hallo,
ich habe in meinem Formular diverse Pflichtfelder, welche meckern, wenn man sie nicht befüllt. Soweit so gut.
Der Focus beim öffnen der Tabelle ist auf ein bestimmtes Feld gelegt, was auch gleich ein Pflichfeld ist. Wenn man nun das Formular versehentlich öffnet und man es wieder schließen will, dann kommt die Warnmeldung 2x, erst dann schließt das Formular. Wie kann ich das unterdrücken via VBA, damit beim close dies nicht passiert? Oder kann man da eine andere Abfangroutine "dazu bauen", wie z.B. wenn close, dann nur fragen ob das Form wirklich geschlossen werden soll?
Private Sub cboIDVerlag_Exit(Cancel As Integer)
    If IsNull(Me!cboIDVerlag) Then
         MsgBox "Das Pflichtfeld Verlag muss befüllt werden!", vbCritical + vbOKOnly, "Pflichtfeld"
        Me!cboIDVerlag.SetFocus
           Cancel = True
    End If
End Sub

Ich habe das Ereignis Beim verlassen des Feldes eingestellt, da es unter Bevor Aktualisierung nicht funktioniert hat.
Wer kann mir hier Hilfestellung leisten?

Gruß Andreas
Titel: Re: Pflichtfeld Standardwert - MsgBox unterdrücken wenn Form geschlossen wird
Beitrag von: DF6GL am Juli 21, 2017, 20:22:24
Hallo,
Zitat
Ich habe das Ereignis Beim verlassen des Feldes eingestellt, da es unter Bevor Aktualisierung nicht funktioniert hat.

Mach das rückgängig und sorg dafür, dass "Vor Aktualisierung" funktioniert.
Titel: Re: Pflichtfeld Standardwert - MsgBox unterdrücken wenn Form geschlossen wird
Beitrag von: derilzemer am Juli 21, 2017, 20:51:34
Hallo Franz,
Zitat von: DF6GL am Juli 21, 2017, 20:22:24
Zitat
Mach das rückgängig und sorg dafür, dass "Vor Aktualisierung" funktioniert.
würde ich echt sofort machen, aber auf dem Feld ist schon ein Ereignis, was ja grundsätzlich kein Problem darstellt. Aber wenn ich es hier integriere, passiert einfach nichts. Ich habe auch nicht herausgefunden warum :(. Das steht drin im Ereignis
Private Sub cboIDVerlag_BeforeUpdate(Cancel As Integer)
    ' kein neuer Datensatz?
    If Not Me.NewRecord Then
        ' Prüfen auf ungewollte Änderung
        If Me.cboIDVerlag.OldValue <> Me.cboIDVerlag.Value Then
            If MsgBox("Achtung!" & vbCrLf & vbCrLf & _
                        "Soll der Verlag tatsächlich von '" & Me.cboIDVerlag.OldValue & _
                                                  "' auf '" & Me.cboIDVerlag.Value & "' geändert werden?", _
                                                  vbQuestion + vbOKCancel) = vbCancel Then
                Cancel = True
            End If
        End If
    End If
End Sub


So sieht es aus, nachdem ich es ergänzt habe, aber es passiert eben nichts mit Messagbox etc.
Private Sub cboIDVerlag_BeforeUpdate(Cancel As Integer)
    If IsNull(Me!cboIDVerlag) Then
         MsgBox "Das Pflichtfeld Verlag muss befüllt werden!", vbCritical + vbOKOnly, "Pflichtfeld"
        Me!cboIDVerlag.SetFocus
           Cancel = True
    End If
   
    ' kein neuer Datensatz?
    If Not Me.NewRecord Then
        ' Prüfen auf ungewollte Änderung
        If Me.cboIDVerlag.OldValue <> Me.cboIDVerlag.Value Then
            If MsgBox("Achtung!" & vbCrLf & vbCrLf & _
                        "Soll der Verlag tatsächlich von '" & Me.cboIDVerlag.OldValue & _
                                                  "' auf '" & Me.cboIDVerlag.Value & "' geändert werden?", _
                                                  vbQuestion + vbOKCancel) = vbCancel Then
                Cancel = True
            End If
        End If
    End If
End Sub

Gruß Andreas
Titel: Re: Pflichtfeld Standardwert - MsgBox unterdrücken wenn Form geschlossen wird
Beitrag von: DF6GL am Juli 22, 2017, 08:11:30
Hallo,

ich meinte das Form_BeforeUpdate-Ereignis:

Private Sub Form_BeforeUpdate(Cancel As Integer)
    If IsNull(Me!cboIDVerlag) Then
         MsgBox "Das Pflichtfeld Verlag muss befüllt werden!", vbCritical + vbOKOnly, "Pflichtfeld"
        Me!cboIDVerlag.SetFocus
           Cancel = True
    End If
Titel: Re: Pflichtfeld Standardwert - MsgBox unterdrücken wenn Form geschlossen wird
Beitrag von: derilzemer am Juli 22, 2017, 09:27:23
Hallo Franz,

ich weiß, wer lesen kann ist klar im Vorteil :(. Wenn man es richtig macht, dann geht es auch. Danke

Gruß Andreas