PDA

Vollständige Version anzeigen : Ueberprüfung von Pflichtfeldern beim Verlassen


langenegger
06.08.2004, 12:03
Hallo Zusammen, Koennt Ihr mir den Befehl erstellen, habe leider noch nicht so gute Programmierkenntnisse. Und zwar für folgendes:

Beim Verlassen des Formulares "Kurse" sollen gewisse Pflichtfelder* überprüft werden. Die Felder dürfen nicht 0 oder keinen Wert enthalten.
Die Ueberprüfung darf aber erst nach einem Klick auf den "Fomular Schliessen-Button" geschehen. Wenn alle oder eines der Pflichtfelder nicht ausgefüllt ist, sollte eine Nachricht erscheinen und es sollte nicht möglich sein das Formular "Kurse" zu schliessen.



Die *Pflichtfelder heissen = Kombinationsfeld82, Kombinationsfeld13, Datum

aktueller Befehl "Formular Schliessen-Button":

Private Sub Befehl40_Click()
On Error GoTo Err_Befehl40_Click

DoCmd.Close acForm, "Kurse"



Vielen Dank :)

Smaug
06.08.2004, 12:11
Vergib allen Feldern die ausgefüllt werden sollen bei der Eigenschaft Marke z.B. ein "X" und pack folgenden Code für das Formular ins Ereignis "Beim Entladen"

Private Sub Form_Unload (Cancel As Integer)
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.Tag = "X" then 'Pflichtfeld
If NZ(ctl.Value)=0 then 'Prüfung ob Feld 0 oder NULL
MsgBox “Bitte das Feld“ & ctl.Name & “ausfüllen“, vbOkOnly
Cancel = true
End If
End If
Next ctl

WDKA-Jürgen
06.08.2004, 12:13
aktueller Befehl "Formular Schliessen-Button":
Die *Pflichtfelder heissen = Kombinationsfeld82, Kombinationsfeld13, Datum


Private Sub Befehl40_Click()
On Error GoTo Err_Befehl40_Click

if isnull (kombinationsfeld82 or me.kombinationsfeld82 = 0 then
msgbox "Der Datensatz darf nichtr geschlossen werden, da im Kombinationsfeld82 noch Eingaben fehlen"
exit sub
end if

hallo



Private Sub Befehl40_Click()
On Error GoTo Err_Befehl40_Click

if isnull (kombinationsfeld82 or me.kombinationsfeld82 = 0 then
msgbox "Der Datensatz darf nichtr geschlossen werden, da im Kombinationsfeld82 noch Eingaben fehlen"
exit sub
end if

if isnull (kombinationsfeld13 or me.kombinationsfeld13 = 0 then
msgbox "Der Datensatz darf nichtr geschlossen werden, da im Kombinationsfeld13 noch Eingaben fehlen"
exit sub
end if

if isnull (datum) then
msgbox "Der Datensatz darf nichtr geschlossen werden, da im Datum noch Eingaben fehlen"
exit sub
end if

DoCmd.Close acForm, "Kurse"



natürlich ist es sinnvoll in der MSGBOX die Kombinationsfelder durch dir richtigen Bezeichnungen zu ersetzen

mfg

Jürgen

langenegger
06.08.2004, 13:05
Vielen Dank mit der 2. Lösung habe ich es geschafft.

MarioR
06.08.2004, 13:30
Hallo,

auch wenn's so geht - du solltest die Prüfung trotzdem in einem Formularereignis vornehmen. Wenn nämlich jemand das Formular über Strg+F4 oder das Schließen-Kreuz zu macht oder Access beendet, dann würde jetzt keine Prüfung stattfinden.

Smaug
06.08.2004, 13:32
Danke Mario !! und zusätzlich - wenn noch 20 Pflichtfelder dazu kommen sollten, wächst der Code ins Unermessliche an - wobei der Inhalt fast immer identisch ist.

WDKA-Jürgen
06.08.2004, 13:55
ich muss Mario und Smaug recht geben. Zudem in meinem Code eine runde Klammer fehlte. *sckäm Ich habe auch nur auf die Frage von langenegger geantwortet. Eine vernünftige Datensicherheit hinzubekommen ist so immer ne Kunst für sich. Die Schwächen stellt man immer erst nach längerem Arbeiten fest, wenn ausgefeilte Abfragen mit diversen Rechenfunktionen anstehen. Da kann man oft testen so viel man will.


mfg


Jürgen