Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

16.2.1 Beispielformulare

16.2.2 Erzeugen einer neuen Instanz

Der übliche Weg zum Öffnen eines Formulars per DoCmd.OpenForm-Methode funktioniert hier nicht. Das können Sie ganz einfach im Testfenster nachvollziehen: Geben Sie dort zunächst einmal die folgende Anweisung ein:

DoCmd.OpenForm "frmKontaktdetails"

Die Anweisung öffnet das angegebene Formular wie gewünscht. Wenn Sie die gleiche Anweisung nun ein zweites Mal ausführen, erscheint kein weiteres Formular, sondern es wird bestenfalls der Fokus auf das bestehende Formular gesetzt. DoCmd.OpenForm öffnet lediglich die Standardinstanz eines Formulars.

Das Öffnen mehrerer Instanzen eines Formulars setzt Folgendes voraus:

  • Das zu öffnende Formular hat ein Klassenmodul.
  • Jede Instanz wird durch eine eigene Objektvariable referenziert.
  • Schauen Sie sich folgendes Beispiel an. Es beschreibt, wie Sie mit der Öffnen-Schaltfläche des Formulars frmKontaktuebersicht eine neue Instanz des Formulars frmKontaktdetails mit dem aktuell in der Liste ausgewählten Kontakt erzeugen.

    Das Formular frmKontaktdetails hat bisher noch kein Modul, da Sie noch keine Ereignisprozedur angelegt oder anderweitig ein Modul erstellt haben. Das ist auch nicht notwendig; stellen Sie einfach die Eigenschaft Enthält Modul in der Entwurfsansicht des Formulars auf den Wert Ja ein.

    Der folgende Code zeigt die Vorgehensweise für eine einzelne Instanz des Formulars. Er enthält die Deklaration einer Objektvariablen, die später auf die neue Instanz verweisen wird, und eine Ereignisprozedur, die beim Klicken auf die Schaltfläche zur Anzeige der Details ausgelöst wird.

    Die Deklaration der Objektvariablen frm erfolgt modulweit und nicht innerhalb der Prozedur cmdDetails_Click. Fände die Deklaration in der Prozedur statt, würde die Variable mit Beenden der Prozedur gelöscht. Durch die Deklaration als Modulvariable bleibt die neue Instanz des Formulars geöffnet, bis Sie das aufrufende Formular schließen.

    Die Prozedur selbst erstellt die Instanz des Formulars und stellt die Eigenschaften Filter und FilterOn so ein, dass der im Listenfeld des aufrufenden Formulars ausgewählte Kontakt angezeigt wird.

    Option Compare Database
    Option Explicit

    'Objektvariable deklarieren
    Dim frm As Form_frmKontaktdetails

    Private Sub cmdDetails_Click()

        'Instanz von frmKontaktdetails erstellen und
        'der Objektvariablen zuweisen
        Set frm = New Form_frmKontaktdetails

        'Filter auf den gewünschten Kontakt setzen
        frm.Filter = "KontaktID = " & Nz(Me!lstKontakte)
        frm.FilterOn = True

        'Formular sichtbar machen
        frm.Visible = True

    End Sub

    Listing 16.22: Code zum Öffnen einer Formularinstanz

    Nächster Abschnitt:

    16.2.3 Öffnen mehrerer Instanzen eines Formulars

    © 2006-2008 André Minhorst Alle Rechte vorbehalten.