Neuigkeiten:

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

Mobiles Hauptmenü

Pflichtfeld Standardwert - MsgBox unterdrücken wenn Form geschlossen wird

Begonnen von derilzemer, Juli 21, 2017, 19:57:32

⏪ vorheriges - nächstes ⏩

derilzemer

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
Grüße und Dank im voraus
Andreas

DF6GL

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.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

derilzemer

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
Grüße und Dank im voraus
Andreas

DF6GL

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
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

derilzemer

Hallo Franz,

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

Gruß Andreas
Grüße und Dank im voraus
Andreas