Beitrag aus SmartTools Access Weekly
Mindestens ein Kontrollkästchen einer Gruppe aktivieren
Access 365 2024 2021 2019 2016 2013 2010
FRAGE Ich verwende in einem Formular meiner Access-Datenbank eine Gruppe von Kontrollkästchen. Für die korrekte Datenerfassung mit möglichst wenig Aufwand soll in Zukunft sichergestellt sein, dass bei neuen Daten oder nach dem Bearbeiten von vorhandenen Datensätzen mindestens ein Kontrollkästchen aktiviert ist. Wie kann ich eine solche Prüfung am einfachsten umsetzen und dann die Speicherung des Datensatzes mit unvollständigen Daten verhindern?
Diverse Anfragen
ANTWORT: Bevor ein neuer Datensatz oder eine Änderung an einem vorhandenen Datensatz gespeichert wird, löst Access das Ereignis "Vor Aktualisierung" des Formulars aus. Diese Ereignisprozedur können Sie zum Beispiel folgendermaßen nutzen:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim Cnt&
Dim arrCheckboxes As Variant
Dim cb As Variant
arrCheckboxes = Array(cb_1, cb_2, cb_3, cb_4, cb_5)
For Each cb In arrCheckboxes
If cb Then Cnt = Cnt + 1
Next 'cb
If Cnt = 0 Then
MsgBox "Es muss mindestens ein " & _
"Kontrollkästchen aktiviert sein!", _
vbOKOnly + vbExclamation, "!!! Problem !!!"
Cancel = True
End If
End Sub
Über "arrCheckboxes = Array(...)" legen Sie fest, welche Kontrollkästchen im Formular geprüft werden sollen. Ersetzen Sie "cb_X" durch die Namen der Kontrollkästchen in Ihren Formular. Diese werden dann in einer Schleife durchlaufen und geprüft. Die Abfrage "If cb... " ergibt "True", wenn ein Kontrollkästchen aktiviert ist. In diesem Fall wird ein Zähler "Cnt" heraufgezählt. Ist er nach dem Durchlaufen der Schleife gleich "0", wurde kein Kontrollkästchen aktiviert. Es wird dann eine entsprechende Meldung angezeigt und der Parameter "Cancel" der Ereignisprozedur auf "True" gesetzt. Das signalisiert Access, dass der Datensatz nicht gespeichert werden soll und der Anwender somit Gelegenheit erhält, seine Eingaben zu korrigieren.