Gültigkeitsprüfungen in Access ◦ ?

Die Access-Entwicklerin kann die Gültigkeit einer Benutzereingabe mit eine Gültigkeitsregel oder -prozedur prüfen:

1. Einfache Prüfungen kann sie deklarativ festlegen, indem sie einen Ausdruck in die Eigenschaft Gültigkeitsregel eines Tabellenfelds, einer Tabellenzeile (eines Datensatzes) oder eines Steuerelements schreibt.

2. Für komplexere Prüfungen kann sie eine eigene Gültigkeitsprozedur programmieren.

### Gültigkeitsregeln

Ein Beispiel einer Gültigkeitsregel finden Sie im Textfeld TxfBuchstabenpräfix des Unterformulars Buchstabenalternativen der Autorenkomponente von TESTS (Feld markieren, »Alt/Eingabetaste, Register Daten). Der folgende Ausschnitt aus der Eigenschaftenliste von TxfBuchstabenpräfix zeigt die Gültigkeitsregel und -meldung für das Buchstabenpräfix einer Zuordnungsalternative:

Der Ausdruck >= "A" Und <= DomMax("Buchstabenpräfix";"[QuizBUCHSTABEN_ALTERNATIVEN]"; "Fragenschlüssel=" & [Fragenschlüssel]) garantiert, dass eine Eingabe in das Textfeld TxfBuchstabenpräfix ...

1. grösser oder gleich "A" ist und

2. kleiner oder gleich dem höchsten der in QuizBUCHSTABEN_ALTERNATIVEN gespeicherten Buchstabenpräfixe des gleichen Fragenschlüssels ist.

Die Funktion DomMax(<Feld>; <Domäne>[; <Kriterium>]) sucht das Maximum einer Domäne (einer Tabelle oder einer Abfrage). Feld ist ein Attribut der Domäne, und Kriterium (optional) entspricht meist dem WHERE-Teil einer SQL-Anweisung.

Jeder Gültigkeitsregel können Sie eine Gültigkeitsmeldung zuordnen, welche die voreingestellte Meldung ersetzt.

### Gültigkeitsprozeduren

Wir programmieren eine Ereignisprozedur, die in einer Mehrfachwahlaufgabe höchstens eine Markierung erlaubt. Der folgende Bildschirmausschnitt zeigt einen unerlaubten Zustand an:

Unsere Gültigkeitsprozedur soll deshalb nach einem zweiten Markierungsversuch "Markieren Sie nur eine Alternative" melden. Eine Prozedur, die einen Klick auf ein zweites Kontrollkästchen (Kk) verhindert, muss den Benutzer allerdings die bestehende Markierung löschen lassen, ohne einen Fehler zu melden. Der folgende Entwurfscode prüft deshalb die Gültigkeit nur nach einem Klick auf ein bisher unmarkiertes Kästchen:

>     Verhindere, dass mehr als eine Mehrfachalternative markiert wird
>       Falls der Klick ein (unmarkiertes) Kontrollkästchen markiert
>       und die Tabelle SCORESMC bereits eine markierte Alternative enthält
>         Warne den Benutzer
>         Mache die Markierung rückgängig
>       sonst
>         Aktualisiere die Tabelle SCORESMC

Die folgende Implementation verwendet die Funktion DCount, welche die Zahl der markierten Alternativen der laufenden Mehrfachwahlfrage von SCORESMC ergibt. Eine Alternative mit dem Tabellenwert -1 (True) ist markiert. Falls das Ergebnis > 0 ist, erscheint eine Fehlermeldung:

>     '--- Verhindere, dass mehr als eine MC-Alternative markiert wird
>     Private Sub KkAntwort_Click()
>       If [KkBenutzerlösung] = True Then					'Markierung vorhanden
>         If DCount( _
>            "[Fragenschlüssel]", _
>            "SCORESMC", _
>            "[Fragenschlüssel]=[Forms]![FrmMehrfachwahl]![TxfFragenschlüssel]" & _
>            " AND [Benutzerlösung]=-1") > 0 _
>         Then
>           MsgBox "Markieren Sie nur  e i n e  Alternative"
>           [KkBenutzerlösung] = False					'Markierung zurücksetzen
>         End If
>       Else
>         'Aktualisiere die vom Anwender aufgehobene Markierung in SCORESMC
>         '(Ohne Refresh würde sie erst das Verlassen des laufenden Datensatzes aktualisieren)
>         Me.Refresh
>       End If
>     End Sub

Fallbeispiel einer Gültigkeitsprüfung: Matrikelnummer
Testing und Debugging (Veranschaulichung am obigen Beispiel)
Arten der Gültigkeitsprüfung