· 

Nur ausgewählte Felder in Formularen anzeigen

Problembeschreibung

Bei einigen papiernen Eingabeformularen werden spezielle Eingabefelder verlangt. Diese werden dann abgefragt, wenn bestimmte Vorbedingungen erfüllt sind. Aktuelles Beispiel sind die Selbstauskünfte für Corona Tests nach §4 der Testverordnung. Dort werden z.B. Name und Geburtsdatum des Kindes nur dann abgefragt, wenn das Kind noch nicht 6 Jahre alt ist. Das in einem Access-Formular darzustellen ist nicht trivial:  Das entsprechende Eingabefeld soll ja nur dann zur Eingabe zur Verfügung stehen, wenn der passende Test-Grund vorliegt.

Grundsätzliche Überlegungen

Folgende Punkte sollten meines Erachtens hier berücksichtigt werden:

  • Keines der Sondereingabefelder (und dessen Beschriftung!)  soll zu sehen sein, wenn das Formular geöffnet wird.
  • Diese Eingabefelder (und deren Beschriftungen!)  sollen dann auftauchen, wenn die entsprechende Bedingung markiert wurde.
  • Für den Fall, dass man sich in der Auswahl des Bedingungsfeldes geirrt hat, sollen die Sondereingabefelder wieder ausgeblendet werden.
  • Und sie sollten optisch etwas hervorgehoben werden, damit der Nutzer merkt, dass hier etwas in neue Felder eingegeben werden soll.

Letzteres ist die einfachste Übung: die Felder werden anders eingerahmt und/oder haben eine andere Hintergrundfarbe, als die Standard-Felder.

Umsetzung

Im Eigenschaftenblatt des Formulars im Register "Ereignis" erstellt man das gewünschte Modul nach Klick auf die drei Pünktchen rechts und dann "Code-Generator"
Im Eigenschaftenblatt des Formulars im Register "Ereignis" erstellt man das gewünschte Modul nach Klick auf die drei Pünktchen rechts und dann "Code-Generator"

Wir benötigen mindestens 2 Module: eines, welches beim Laden des Formulars aktiviert wird und alle Eingabe- und Bezeichnungsfelder unsichtbar schaltet und eines, welches die relevanten Felder sichtbar schaltet, wenn die Bedingung erfüllt wurde.

Das erste hat die grundsätzliche Form

Private Sub Form_Load()
'Alle speziellen Formularelemente werden ausgeblendet
    Me!KontaktA.Visible = False
    Me!Kontakt1.Visible = False
    .....
End Sub

Dabei ist es wichtig, dass der Name "Form_Load" ist. Das wird automatisch eingestellt, wenn wir das Modul als Ereignisprozedur "Bei Laden" erstellen (siehe Abbildung).

Das zweite Modul erstellen wir, indem wir das Feld aktivieren, in das die Bedingung eingetragen werden soll. Dort gilt, dass nach der Aktualisierung (siehe Abbildung) die Prozedur erstellt wird. Weil wir dort mehrere Felder (zumindest ein Eingabe- und Bezeichnungsfeld) einblenden müssen, wählen wir die Select Case - End Select Schleife. Zusammen mit dem oben genannten Ausblenden sieht die Anweisung im Prinzip so aus:

Private Sub AnmGrundIDRef_AfterUpdate()
    Me!KontaktA.Visible = False
    Me!Kontakt1.Visible = False
    ....
    'Die speziellen Formularelemente werden bedingt eingeblendet
    Select Case Me!AnmGrundIDRef 'Name des Eingabefeldes für die Bedingung
    Case "§4 Absatz 1 Nr. 1"
        Me!AnmKindinfo.Visible = True
        Me!BezKleinkind.Visible = True
    Case "§4 Absatz 1 Nr. 6"
        Me!KontaktA.Visible = True
        Me!Kontakt1.Visible = True
         Me!AnmKontakt1.Visible = True
        ...
    End Select

 

Kommentar schreiben

Kommentare: 0