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!

4.5.7 1:n-Beziehungen

4.5.8 1:n-Beziehung per Unterformular und Datenblattansicht

Das Unterformular zur Anzeige der Projekte in der Datenblattansicht ist genauso wie das aus Abschnitt 4.5.3, »Einfache Daten in der Übersicht als Datenblatt«, aufgebaut. Es basiert allerdings auf einer Abfrage, die alle Felder der Tabelle tblProjekte enthält und diese zusätzlich nach dem Startdatum sortiert (siehe Abbildung 4.35).

Abbildung 4.35: Datensatzquelle des Unterformulars zur Anzeige der Projekte eines Kunden (»sfmProjekte«)

Vorbereiten des Unterformulars

Das Unterformular selbst enthält lediglich die drei Felder Projekt, Startdatum und Enddatum. Die anderen Felder werden zwar für die Funktionalität benötigt, sollen aber nicht angezeigt werden - und die Datenblattansicht zeigt immer alle im Entwurf enthaltenen Felder an. Daran ändert auch das Einstellen der Sichtbar-Eigenschaft auf den Wert Nein nichts. Die einzige Möglichkeit, ein Feld »unsichtbar« zu machen, ist das Verkleinern der Spaltenbreite auf den Wert 0. Dies erreichen Sie mit dem Kontextmenü-Eintrag Format|Spalten ausblenden des Spaltenkopfes oder mit der VBA-Eigenschaft ColumnWidth.

Vergessen Sie nicht, die Eigenschaft Standardansicht auf Datenblatt einzustellen und die Spaltenbreiten und Schriftgröße Ihren Bedürfnissen anzupassen. Speichern Sie das Formular unter dem Namen sfmProjekte (siehe Abbildung 4.36).

Abbildung 4.36: Das Unterformular zur Anzeige der Projekte in der Entwurfsansicht

Erstellen des Hauptformulars

Das Hauptformular basiert auf der Tabelle tblKunden und zeigt alle darin enthaltenen Felder an. Ordnen Sie die Felder wie in Abbildung 4.37. Anschließend fügen Sie das Unterformular in das Hauptformular ein, indem Sie dieses aus dem Navigationsbereich in den Entwurf des Hauptformulars ziehen.

Damit das Unterformular nur die Projekte des im Hauptformular angezeigten Kunden ausgibt, müssen zwei Eigenschaften des Unterformularsteuerelements entsprechend eingestellt werden, was beim Einfügen des Unterformulars normalerweise automatisch geschieht.

Die beiden Eigenschaften heißen Verknüpfen von und Verknüpfen nach und erwarten den Namen des Fremdschlüsselfeldes der Datensatzquelle des Unterformulars und den Namen des Primärschlüsselfeldes der Datensatzquelle des Hauptformulars. Diese beiden Felder haben üblicherweise den gleichen Namen - in diesem Fall KundeID.

Um die Eigenschaften einzusehen oder anzupassen, markieren Sie das Unterformularsteuerelement - dieses ist keinesfalls mit dem Unterformular selbst zu verwechseln! Am einfachsten markieren Sie es, wenn Sie erst ein anderes Steuerelement des Hauptformulars markieren und dann einfach auf das Unterformular klicken.

Wenn das Eigenschaftsfenster im Register Daten die beiden Eigenschaften anzeigt, liegen Sie richtig.

Abbildung 4.37: Haupt- und Unterformular zur Anzeige von Kunden und Projekten

Wenn Sie das Formular nun in der Formularansicht öffnen, sieht dieses etwa wie in Abbildung 4.38 aus. Beim Wechseln zu einem anderen Datensatz des Hauptformulars zeigt das Unterformular automatisch die passenden Projekte an.

Abbildung 4.38: Das fertige Formular zur Anzeige von Kunden und Projekten (»frmKunden«)

Anlegen, bearbeiten und löschen im Detailformular

Eine Projekttabelle wird in der Regel nicht mit derart wenig Feldern auskommen. Sie werden also normalerweise wie weiter oben in Abschnitt 4.5.3, »Einfache Daten in der Übersicht als Datenblatt«, ein Detailformular zur Anzeige der Projekte benötigen. Um dieses anzuzeigen, neue Projekte anzulegen oder Projekte zu löschen, können Sie die ebenfalls in dem genannten Abschnitt vorgestellten Schaltflächen einschließlich VBA-Code für das Formular frmKunden anpassen.

Die Prozeduren zum Löschen eines Datensatzes und für die Anzeige zum Bearbeiten sind prinzipiell mit den oben beschriebenen identisch; bei Bedarf finden Sie diese im Klassenmodul des Formulars frmKunden.

Eine wichtige Neuerung liefert das Neuanlegen per Detailformular. In der Routine, die durch das Anklicken der Schaltfläche cmdNeu ausgelöst wird, enthält die DoCmd.Open-Anweisung einen bislang nicht verwendeten Parameter. Mit OpenArgs kann man einen einzelnen Wert, auch Öffnungsparameter genannt, an das aufgerufene Formular übergeben. In diesem Fall handelt es sich dabei um den Wert des Feldes KundeID.

Private Sub cmdNeu_Click()
    DoCmd.OpenForm "frmProjekteDetailansicht", DataMode:= acFormAdd, _
        WindowMode:= acDialog, OpenArgs:=Me!KundeID
    Me.Requery
End Sub

Listing 4.13: Aufruf des Detailformulars mit Öffnungsargument

Der Hintergrund ist, dass neue Datensätze im Detailformular zur Anzeige der Projekte direkt mit dem richtigen Kunden ausgestattet werden sollen (siehe Abbildung 4.39).

Damit das Detailformular den Öffnungsparameter auch auswertet, legen Sie dort für die Ereigniseigenschaft Beim Öffnen die folgende Prozedur an. Die Prozedur prüft, ob ein Öffnungsparameter übergeben wurde (das ist notwendig, da das Formular etwa zum Bearbeiten auch ohne Öffnungsparameter geöffnet werden soll - das Fehlen des Öffnungsarguments würde sonst einen Fehler auslösen) und weist diesen dann der Eigenschaft DefaultValue des Feldes KundeID zu. Dadurch wird der entsprechende Eintrag im Kombinationsfeld zur Anzeige der verknüpften Werte voreingestellt.

Private Sub Form_Open(Cancel As Integer)
    If Not IsNull(Me. OpenArgs) Then
        Me!KundeID. DefaultValue = Me.OpenArgs
    End If
End Sub

Listing 4.14: Auswerten des Öffnungsarguments beim Öffnen eines Formulars

Abbildung 4.39: Das Kunden-Formular und die Detailansicht für Projekte mit einem neuen Datensatz (»frmKunden«, »frmProjekteDetailansicht«)

Nächster Abschnitt:

4.5.9 1:n-Beziehung per Listenfeld

© 2006-2008 André Minhorst Alle Rechte vorbehalten.