Zur Kontrolle der Daten welche durch den Anwender eingegeben werden, bestehen mehrere Möglichkeiten.
Alles was mit booleanscher Algebra ausdrückbar ist, kann in der Gültigkeitsregel erfasst werden. Nicht möglich ist eine differenzierte Fehlermeldung, also die Aussage, der Eingegebene Wert ist zu gross oder er ist zu klein, da nur eine einzige Fehlermeldung zulässig ist.
Sind die Werte, welche in einem Feld eingetragen werden dürfen, bekannt, so können diese in eine eigene Tabelle erfasst werden. Diese Tabelle kann dann mittels einem Dropdownfeld in Beziehung gestellt werden. Das Dropdownfeld kennt die Eigenschaft, "nur Listeneinträge". Somit lassen sich alle unbekannten Werte ausschliessen. Nachteil: Die Fehlermeldung (NotInList) ist nicht besonders aussagekräftig.
Mit Hilfe von VB-Code kann die Eingabe eines Wertes in eine Formular vor dessen Speicherung geprüft werden. Eine differenzierte Fehlermeldung ist programmierbar.
Das zu überwachende Feld, besser das gesamte Formular, erhält einen Code in der Ereigniseigenschaft "Vor Aktualisierung". Vor Aktualisierung wird ausgeführt bevor der Datensatz gespeichert wird.
Dim vFalsch As Boolean vFalsch = False Select Case Me.tfJahrgang.Value Case "" vFalsch = True MsgBox "Es muss ein Jahrgang eingegeben werden!" Case Is < 1880 vFalsch = True MsgBox "Der Jahrgang muss nach 1880 liegen!" Case Is > Year(Now()) vFalsch = True MsgBox "Der Jahrgang kann nicht in der Zukunft liegen!" End Select If vFalsch Then Me.tfJahrgang.SetFocus DoCmd.CancelEvent End If
Me.tfJahrgang.SetFocus setzt den Cursor in das Feld tfJahrgang des aktuellen
Formulars
DoCmd.CancelEvent bricht das aktuelle Ereignis, in diesem Fall speichern, ab.
In Formularen mit vielen Datenfeldern und bereits vorbelegten Datenfeldern kann es vorkommen, dass Felder welche für die Eingabe verändert werden müssen, leicht übersehen werden. Mit Hilfe folgender Regeln wollen wir erreichen, dass deutlich sichtbar wird, welches Feld verändert wurde:
Die Deklaration der Konstanten erfolgt ausserhalb aller Prozeduren. Somit haben die Konstanten globalen Charakter. Beachten Sie die Ereignisse auf welchen die folgenden Prozeduren programmiert sind.
'Vorbelegung von Konstanten mit Farbwerten Const lngRot = 255 Const lngGelb = 65528 Const lngWeiss = 16777215 Private Sub cmdHauptmenü_Click() DoCmd.Close DoCmd.OpenForm ("frmHauptmenü") DoCmd.Beep End Sub Private Sub Form_BeforeInsert(Cancel As Integer) 'Vor Eingabe des ersten Zeichens, Farbe anpassen '----------------------------------------------- Me.Hausnummer.BackColor = lngRot Me.Firma.BackColor = lngRot Me.Strasse.BackColor = lngRot Me.PLZ.BackColor = lngRot End Sub Private Sub Form_BeforeUpdate(Cancel As Integer) Fehler = False 'Plausibilitätsprüfung '-------------------- If IsNull(Me.Hausnummer.Value) Then MsgBox "Ohne Hausnummer geht es nicht" Me.Hausnummer.SetFocus DoCmd.CancelEvent Fehler = True End If 'Inhalt des Feldes aus Formular auf Variabel legen vFirma = Me.Firma.Value 'Erstes Leerzeichen finde und dessen Position auf vPos1 legen vPos1 = InStr(1, vFirma, " ") 'zweites Leerzeichen finden (hinter vPos1+1) vPos2 = InStr(vPos1 + 1, vFirma, " ") 'Anwender informieren MsgBox "Leerzeichen befinden sich an den Positionen " & vPos1 & " und " & vPos2, , vFirma 'wenn kein Fehler aufgetreten ist, Farben zurück setzen '------------------------------------------------------ If Fehler = False Then Me.Hausnummer.BackColor = lngWeiss Me.Firma.BackColor = lngWeiss Me.Strasse.BackColor = lngWeiss Me.PLZ.BackColor = lngWeiss End If End Sub ' Wenn ein Feld geändert wird, Farbe ändern ' ----------------------------------------- Private Sub Hausnummer_Change() Me.Hausnummer.BackColor = lngGelb End Sub Private Sub PLZ_Change() Me.PLZ.BackColor = lngGelb End Sub Private Sub Strasse_Change() Me.Strasse.BackColor = lngGelb End Sub Private Sub Firma_Change() Me.Firma.BackColor = lngGelb End Sub
Es gibt nicht "DIE" Methode für eine Plausibilitätsprüfung. Jede Situation muss aufgrund der Vor- und Nachteile geprüft werden. Es können in einer Datenbank unterschiedlichste Methoden angewendet werden. Grundsatz: Je näher die Prüfung bei den Daten stattfindet, um so besser.
Vorteil | Nachteil | |
Gültigkeitsregel auf Tabelle |
|
|
Beziehung mit referenzieller Integrität |
|
|
VBA Code auf Formular |
|
|