Umfragen und Multiple-Choice-Tests - Teil 2

Die Steuerelemente für die Antwortenanzeigen

Zur Anzeige der Antworten benötigen Sie wieder ein Unterformular. Dabei sind Sie gleich mit einer Reihe von Schwierigkeiten konfrontiert:

Bei einem gebundenen Formular, das die Datensätze aus der Tabelle tabAntworten passend zum übergeordneten Formular anzeigt, werden natürlich auch die richtigen Antworten angezeigt. Dann braucht der Benutzer aber natürlich keinen Test mehr machen, wenn er die Antworten schon angezeigt bekommt. Sie müssten also zumindest das Kontrollkästchen als ungebundenes Steuerelement einfügen. In einem Endlosformular würden dann beim Aktivieren eines Kontrollkästchens das Kontrollkästchen jedes Datensatzes aktiviert werden. Zudem können Sie die Daten so nicht auswerten, weil Sie immer nur Zugriff auf den aktuellen Datensatz haben.

Die Lösung dieses Problems besteht im Prinzip darin, die Steuerelemente erst zur Laufzeit zu erzeugen, und zwar in der benötigten Anzahl und im Kopf- oder Fußbereich des Formulars, da sie nicht für jeden Datensatz in der Tabelle tabAntworten wiederholt werden sollen. Dabei gibt es aber ein zweites Problem: Sie wissen nicht, wie viele Steuerelemente Sie benötigen, weil die maximale Anzahl Antworten nicht begrenzt ist. Zudem können Sie Steuerelemente in Access nur in der Entwurfsansicht erstellen. Wenn Sie das Formular aber als Unterformular anzeigen lassen, können Sie nicht bei jedem Datensatzwechsel im Hauptformular das Unterformular in der Entwurfsansicht öffnen, anpassen und wieder neu laden. Es gibt daher nur einen wirklich praktikablen Weg, der nachfolgend im Detail beschrieben wird:

  • Sie rufen das Hauptformular über eine VBAProzedur auf, die zunächst die benötigte Anzahl Steuerelemente im Unterformular erzeugt und das Unterformular speichert. Erst danach wird
    das Hauptformular geladen und angezeigt.

  • Im Unterformular werden so viele Steuerelemente erzeugt, wie für die Frage mit den meisten Antworten notwendig ist.

  • Beim Wechseln des Datensatzes im Hauptformular werden die Daten aus der Tabelle tabAntworten geladen und nicht benötigte Steuerelemente lediglich ausgeblendet.