Supportnet / Forum / Datenbanken
Nächsten Datensatz nicht anzeigen bevor Pflichtfeld nicht eingetragen
Frage
Hallo, möchte das das Pflichtfeld Ansprechpartner1 auf alle Fälle eingetragen wird bevor zum nächsten Datensatz geklickt werden kann.
Habe diesen Code:
---------------------------------------------------------
Private Sub Ansprechpartner1_GotFocus()
If IsNull(Ansprechpartner1) Then
MsgBox "Eingabe des Ansprechpartner1 erforderlich", vbOKOnly, "Ansprechpartner1"
Ansprechpartner1.SetFocus
End If
End Sub
---------------------------------------------------------
Währe ideal wenn die MsgBox erst aufpoppt wenn der Anwender auf "nächsten Datensatz anzeigen" klickt, dann aber auch verhindert wird das der nächste Datensatz angezeigt wird bevor nicht das Feld Ansprechpartner1 gefüllt wird.
Bei der Funktion GotFocus() wird dies umgangen indem man einfach die Box wegklickt und dann einfach ins ein anderes Feld klickt. Brauchte also ne bessere Funkiton als GotFocus() oder so...
Jemand ne idee?
Gruss
Antwort 1 von RalfH
Das ganze einfach auf "Vor Aktualisierung"
Antwort 2 von Pheaton
Hi Ralf,
du meinst ..._BeforeUpdate(Cancel As Integer)???
Private Sub Ansprechpartner1_BeforeUpdate(Cancel As Integer)
If IsNull(Ansprechpartner1) Then
MsgBox "Eingabe des Ansprechpartner1 erforderlich", vbOKOnly, "Ansprechpartner1"
Ansprechpartner1.SetFocus
End If
End Sub
Tangiert das Programm nicht-kommt jetzt gar keine MsgBox und ich kann ohne Beanstandung den nächsten Datensatz anzeigen!
Komisch oder falsche Funktion?
du meinst ..._BeforeUpdate(Cancel As Integer)???
Private Sub Ansprechpartner1_BeforeUpdate(Cancel As Integer)
If IsNull(Ansprechpartner1) Then
MsgBox "Eingabe des Ansprechpartner1 erforderlich", vbOKOnly, "Ansprechpartner1"
Ansprechpartner1.SetFocus
End If
End Sub
Tangiert das Programm nicht-kommt jetzt gar keine MsgBox und ich kann ohne Beanstandung den nächsten Datensatz anzeigen!
Komisch oder falsche Funktion?
Antwort 3 von erik
Nimm das VorAktualisierung-Ereignis des Formulars, das wird auf jeden Fall ausgeführt, wenn du zuvor den Datensatz geändert hast. Wenn du dort mit deinen Prüfungen nicht zufrieden bist, dann verhinderst du die Speicherung mit
Cancel = True
Cancel = True
Antwort 4 von Pheaton
Sorry verstehe jetzt nur noch Bhf :-(
Ist das so gemeint?:
Private Sub Ansprechpartner1_BeforeUpdate(Cancel As Integer)
If IsNull(Ansprechpartner1) Then
MsgBox "Eingabe des Ansprechpartner1 erforderlich", vbOKOnly, "Ansprechpartner1"
Ansprechpartner1.SetFocus
Cancel = True
End If
End Sub
funktioniert leider auch nicht.....
P.S.: liegts vielleicht daran das ich datensätze habe bei denen das feld schon ausgefüllt ist und welsche die dort leer sind?
eigentlich nicht, oder? deswegen habe ich ja die kontrollstruktur if....
Ist das so gemeint?:
Private Sub Ansprechpartner1_BeforeUpdate(Cancel As Integer)
If IsNull(Ansprechpartner1) Then
MsgBox "Eingabe des Ansprechpartner1 erforderlich", vbOKOnly, "Ansprechpartner1"
Ansprechpartner1.SetFocus
Cancel = True
End If
End Sub
funktioniert leider auch nicht.....
P.S.: liegts vielleicht daran das ich datensätze habe bei denen das feld schon ausgefüllt ist und welsche die dort leer sind?
eigentlich nicht, oder? deswegen habe ich ja die kontrollstruktur if....
Antwort 5 von Pheaton
...jetzt fällt mir noch was ein das eventl. relevant sein könnte:
habe ein unterformular im formular und die kontrollsruktur ist im unterformular-kann das das problem sein?
eigentlich ja nicht, denn wenn ich lostFocus bzw. getFocus benutze (sehe 1.Post) dann zeigt er mir ja die MsgBox!
habe ein unterformular im formular und die kontrollsruktur ist im unterformular-kann das das problem sein?
eigentlich ja nicht, denn wenn ich lostFocus bzw. getFocus benutze (sehe 1.Post) dann zeigt er mir ja die MsgBox!
Antwort 6 von Marie
If IsNull(Me![Ansprechpartner1]) schon probiert?
Antwort 7 von erik
Das Formular selbst hat ein BeforeUpdate-Ereignis, nicht nur das Steuerelement. Du brauchst das Ereignis des Formulars.
Private Sub Form_BeforeUpdate(Cancel As Integer)
Private Sub Form_BeforeUpdate(Cancel As Integer)
Antwort 8 von Pheaton
Hi Marie,
die Kontrollstruktur funktioniert ja (--> wenn ich lostFocus() benutze zeigt er mir ja die MsgBox ) mein Problem ist das, obwohl ich Cancel=True drin habe er mich zum nächsten Datensatz lässt nach dem ich die MsgBox wegdrücke??
Hi erik,
habe natürlich (in meinem Wahn) auch schon das BeforeUpdate-Ereignis auch für´s Formular schon Probiert - negativ!
Hab ne neue Idee-werde die Access Buttons unten deaktivieren/ausblenden Eigene Buttons für letzter/nächster/neuer Datensatz erstellen und die müsste ich ja dann deaktivieren können fals meine Pflichtfelder nicht ordnungsgemäß ausgefüllt sind!
Danke für euere mühen!
p.s.: fals jemand zu meinem Problem doch noch einen Geistesblitz haben sollte, immer her damit! :-)
die Kontrollstruktur funktioniert ja (--> wenn ich lostFocus() benutze zeigt er mir ja die MsgBox ) mein Problem ist das, obwohl ich Cancel=True drin habe er mich zum nächsten Datensatz lässt nach dem ich die MsgBox wegdrücke??
Hi erik,
habe natürlich (in meinem Wahn) auch schon das BeforeUpdate-Ereignis auch für´s Formular schon Probiert - negativ!
Hab ne neue Idee-werde die Access Buttons unten deaktivieren/ausblenden Eigene Buttons für letzter/nächster/neuer Datensatz erstellen und die müsste ich ja dann deaktivieren können fals meine Pflichtfelder nicht ordnungsgemäß ausgefüllt sind!
Danke für euere mühen!
p.s.: fals jemand zu meinem Problem doch noch einen Geistesblitz haben sollte, immer her damit! :-)