window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Von Formular zu Formular mit OpenArgs

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Formulare zeigen üblicherweise die Daten aus Tabellen oder Abfragen an. Beim Aufruf von einem anderen Formular teilt man gegebenenfalls mit, welcher Datensatz angezeigt werden soll. In manchen Fällen ist es aber nötig, weitere Daten zu übergeben oder auch Daten von einem geöffneten Formular auszulesen. Wie dies in den verschiedenen Konstellationen gelingt, zeigt der vorliegende Artikel.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1406_VonFormularZuFormular.mdb.

Wert an Steuerelement übergeben

Im ersten Beispiel wollen wir einfach einen Wert in ein Textfeld in ein erstes Formular eingeben und diesen Wert per Schaltfläche in ein Textfeld eines anderen Formulars übertragen. Die Protagonisten dieses Beispiels heißen frm1 und frm2 (siehe Bild 1).

übergeben eines Wertes von einem Formular zum nächsten

Bild 1: übergeben eines Wertes von einem Formular zum nächsten

frm1 enthält ein Textfeld namens txtZuUebergeben und eine Schaltfläche namens cmdWertUebergeben, frm2 enthält ein Textfeld namens txtUebergebenerWert.

Damit die Schaltfläche beim Anklicken die gewünschte Ereignisprozedur ausführt, wählen Sie für die Ereigniseigenschaft Beim Klicken des Steuerelements den Eintrag [Ereignisprozedur] aus und klicken dann auf die Schaltfläche rechts von der Eigenschaft. Es erscheint die leere Ereignisprozedur im VBA-Editor, die Sie wie in Listing 1 ergänzen. Die einzige Anweisung liest den Wert des Textfeldes txtZuUebergeben des Formulars frm1 aus. frm1 kann über den Ausdruck Me referenziert werden, da es sich im gleichen Formular befindet, zu dem das Klassenmodul mit dieser Prozedur gehört.

Private Sub cmdWertUebergeben_Click()
     Forms!frm2!txtUebergebenerWert = Me!txtZuUebergeben
End Sub

Listing 1: übergeben eines Wertes zwischen zwei Formularen

Wenn Sie den Wert des Ausdrucks Me!txtZuUebergeben nun an ein Textfeld in einem anderen Formular übergeben möchten, können Sie nicht mit dem Ausdruck Me auf das Zielformular zugreifen – schließlich handelt es sich um ein anderes Formular. Also referenzieren wir dieses Formular über die Auflistung Forms und dessen Element frm2 (Forms!frm2). Das Zielsteuerelement hängen wir, durch ein weiteres Ausrufezeichen angeführt, an diesen Ausdruck an (Forms!frm2!txtUebergebenerWert). Die Zuweisung sieht nun so aus:

Forms!frm2!txtUebergebenerWert =                       Me!txtZuUebergeben

Es gibt noch eine ganze Menge weiterer Schreibweisen, um das Zieltextfeld zu referenzieren. Die folgende ist noch relativ einfach:

Forms("frm2")("txtUebergebenerWert")

Diese Version ist die ausführlichste:

Forms.Item("frm2").Controls.Item(           "txtUebergebenerWert").Value

Hier identifizieren wir das Zielformular über die Item-Eigenschaft der Forms-Auflistung. Dieses wiederum hat eine Controls-Auflistung, die ebenfalls eine Item-Eigenschaft für den Zugriff auf das gewünschte Element bietet.

Schließlich verwenden wir die Eigenschaft Value, um auf den Wert des Steuerelements zuzugreifen. Dabei handelt es sich um die Standardeigenschaft, die Sie normalerweise nicht anzugeben müssen.

Sie können das Zielformular auch vorher mit einer Variable des Typs Form referenzieren, was den Ausdruck etwas übersichtlicher macht – hier für eine zweite Schaltfläche namens cmdWertUebergebenII hinterlegt. Die Variable heißt frmZiel und wird mit dem Verweis auf Forms!frm2 gefüllt (alternativ Forms(“frm2”) oder Forms.Item(“frm2”)):

Private Sub cmdWertUebergebenII_Click()
    Dim frmZiel As Form
    Set frmZiel = Forms!frm2
    frmZiel!txtUebergebenerWert =                      Me!txtZuUebergeben
End Sub

Wert beim öffnen übergeben

Normalerweise werden Sie den Wert gleich beim öffnen eines Formulars vom öffnenden Formular an das geöffnete Formular übergeben wollen. Der Versuchsaufbau ist dem aus dem vorherigen Beispiel sehr ähnlich. Die Formulare heißen nun frm3 und frm4 (siehe Bild 2).

Aufruf eines Formulars mit direkter übergabe eines Wertes

Bild 2: Aufruf eines Formulars mit direkter übergabe eines Wertes

Der Unterschied liegt in der Zuständigkeit der verschiedenen Aufgaben. Während im ersten Beispiel der Wert innerhalb einer einzigen Anweisung von Formular zu Formular übergeben wurde, ist hier etwas mehr Aufwand erforderlich.

Die Schaltfläche cmdOeffnenUndWertUebergeben des Formulars frm3 soll diesmal das Formular frm4 öffnen und diesem gleich den entsprechenden Wert übergeben. Kein Problem, wie die Prozedur aus Listing 2 zeigt: Wir öffnen einfach das Formular frm4 mit dem Aufruf der Methode DoCmd.OpenForm mit dem Namen des zu öffnenden Formulars als Parameter, also frm4.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar