|
|
Thema:
|
Access 97, 2000 und 2002 |
Problem:
|
Wie muss ich in einem Formular die Gültigkeitsregel
für ein Feld/Steuerelement formulieren, so dass "Null"
und "Leere Zeichenfolge" nicht möglich sind, der Anwender
sich also nicht um eine Eingabe "drücken" kann? |
Lösung:
|
Gültigkeitsregeln sollen sicherstellen, dass
in Felder nur bestimmte Werte eingegeben werden können - das setzt
voraus, dass überhaupt eine Eingabe erfolgt, die Access prüfen
kann. Für Fälle wie den oben geschilderten, hat Microsoft eine
spezielle Eigenschaft vorgesehen:
- Öffnen Sie die Tabelle, die dem
betreffenden Formular zugrunde liegt, im Entwurfsmodus.
- Markieren Sie das betreffende Feld und
setzen Sie dessen Eigenschaft "Eingabe erforderlich"
auf "Ja".
- Speichern Sie den Tabellenentwurf.
Wenn nun im betreffenden Formular ein neuer
Datensatz angelegt und gespeichert werden soll, ohne dass in das
Feld etwas eingegeben wurde, zeigt Access eine entsprechende
Fehlermeldung an und verweigert die Speicherung des neuen
Datensatzes.
Möchten Sie in solchen Situationen eine eigene Fehlermeldung
anzeigen, gehen Sie wie folgt vor:
- Öffnen Sie das betreffende Formular im
Entwurfsmodus.
- Stellen Sie dessen Eigenschaft "Vor
Aktualisierung" auf "[Ereignisprozedur]" ein und
klicken Sie auf die Schaltfläche mit den drei kleinen Punkten
dahinter.
- Geben Sie im VBA-Editor die folgenden
Anweisungen ein (ersetzen Sie dabei "Kontaktperson"
durch den Namen des zu prüfenden Feldes):
Private Sub
Form_BeforeUpdate(Cancel As Integer)
If IsNull(Me.Kontaktperson) Or _
IsEmpty(Me.Kontaktperson) Then
Beep
MsgBox "Bitte Daten in das Feld "
& _
"'Kontaktperson' eingeben!"
Cancel = True
Me.Kontaktperson.SetFocus
End If
End Sub
Speichern Sie anschliessend den Formularentwurf. Soll nun ein neuer
Datensatz angelegt und gespeichert werden, wird zunächst die oben
gezeigte Ereignisprozedur ausgeführt. Sie prüft, ob das
betreffende Feld NULL oder LEER ist. Trifft eines von beiden zu,
wird eine entsprechende Meldung angezeigt, die Speicherung des
Datensatzes über "Cancel = True" verweigert und der Fokus
auf das Textfeld gesetzt. |
|