Haupt- und Unterformular synchronisieren
Veröffentlicht am 10.09.2019
Ein Formular dient bei Access oft zur Anzeige von Daten, die miteinander in Beziehung stehen. Das typische Beispiel ist die Kombination aus Firmen und Ansprechpartnern. Hier sollen meistens nur die Felder einer Firma und darunter eine Liste der Ansprechpartner dieser Firma angezeigt werden. Bei dieser Konstellation handelt es sich um eine klassische 1:n-Beziehung, die bei Access optimal über die Kombination eines Haupt- und eines Unterformulars angezeigt wird.
Formulare mit Bezug
Solche Formulare sind mit dem Formularassistenten blitzschnell angelegt. Das Hauptformular zeigt stets die 1-Seite und das Unterformular die N-Seite der Beziehung an. Im Beispiel zeigt das Hauptformular also die Felder einer Firma und das Unterformular die Felder der Ansprechpartner dieser Firma an. Ein Unterformular wird übrigens erst dadurch zum Unterformular, dass es in ein anderes Formular eingebettet wird. Ansonsten haben Unterformulare keine spezielle Kennzeichnung.
Damit der Anwender in den Datensätzen von Haupt- und Unterformular gezielt blättern kann, stattet der Formularassistent beide Formulare mit eigenen Navigationsschaltflächen aus. Auf dem Hauptformular ist außerdem reichlich Platz, um weitere Schaltflächen für spezielle Funktionen anzulegen. Hierbei ist der Schaltflächenassistent von Access behilflich.

Haupt- steuert Unterformular
Aber wie lassen sich im Hauptformular Schaltflächen anlegen, die das Unterformular beeinflussen? Der übliche Weg, um beispielsweise auf einen anderen Datensatz Einfluss zu nehmen, ist die Verwendung der Anweisung DoCmd.GoToRecord. Wird diese Anweisung in einer Ereignisprozedur des Hauptformulars aufgerufen, verändert Sie immer den aktuellen Datensatz im Hauptformular. Damit sich diese Anweisung auf das Unterformular auswirkt, müssen Sie es zunächst mit der Anweisung DoCmd.GoToControl „subfrmAdressen“ aktivieren. Um dafür zu sorgen, dass die Anweisung richtig funktioniert, müssen Sie den Text subfrmAdressen durch den Namen Ihres Unterformulars ersetzen. Wenn Sie das Unterformular von einem ganz anderen Formular aus steuern wollen, müssen Sie zusätzlich das Formular angeben, in dem sich das Unterformular befindet:
DoCmd.SelectObject acForm, "frmAdressen"
DoCmd.GoToControl "subfrmAdressen"
DoCmd.GoToRecord Record:=acFirst
Die, hier zum Download bereitgestellte, Beispieldatenbank zeigt, wie Sie den aktuellen Datensatz in einem Unterformular per Fernsteuerung verändern können.