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.8 1:n-Beziehung per Unterformular und Datenblattansicht

4.5.9 1:n-Beziehung per Listenfeld

Wenn Sie ohnehin ein Formular für die Anzeige der Details der verknüpften Datensätze des Hauptformulars verwenden, müssen beziehungsweise sollten Sie im Hauptformular nicht die Möglichkeit zur Bearbeitung der verknüpften Daten bieten.In diesem Fall reicht ein Listenfeld zu deren Anzeige aus; außerdem bietet es die Möglichkeit, Datensätze zur Bearbeitung und zum Löschen auszuwählen - alles wie bereits in Abschnitt 4.5.4, »Daten in der Übersicht als Listenfeld« beschrieben.

Eine Besonderheit gibt es jedoch: Die im Listenfeld angezeigten Daten hängen nun von dem im Hauptformular angezeigten Datensatz ab. Dementsprechend muss bei einem Wechsel des Hauptformulars auch der Inhalt des Listenfeldes aktualisiert werden (siehe Abbildung 4.40).

Damit das Listenfeld jeweils die Projekte zu dem im Hauptformular angezeigten Kunden ausgibt, legen Sie für die Ereigniseigenschaft Beim Anzeigen die folgende Routine an. Diese stellt einen SQL-Ausdruck mit einer Abfrage zusammen, die alle anzuzeigenden Felder der Tabelle tblProjekte ausgibt und dabei nur jene Datensätze berücksichtigt, deren Feld KundeID mit dem Wert des Formularfeldes KundeID übereinstimmt. Diesen SQL-Ausdruck weist die Routine dann der Eigenschaft RowSource des Listenfeldes zu:

Private Sub Form_Current()
    Dim strSQL As String
    strSQL = "SELECT ProjektID, Projekt, Startdatum, Enddatum " _
        & "FROM tblProjekte WHERE KundeID = " & Me!KundeID

    Me!lstProjekte. RowSource = strSQL
End Sub

Listing 4.15: Synchronisieren des Listenfeldinhalts mit dem Hauptformular

Abbildung 4.40: Darstellung einer 1:n-Beziehung per Listenfeld (»frmKundenListenfeld«)

Projekt anzeigen per Doppelklick

Wenn Sie dem Benutzer zusätzlichen Komfort bieten möchten, legen Sie für das Listenfeld eine Prozedur an, die beim Doppelklick auf das Listenfeld den aktuell markierten Eintrag im Detailformular anzeigt. Dazu verwenden Sie die Ereigniseigenschaft Beim Doppelklicken:

Private Sub lstProjekte_DblClick(Cancel As Integer)
    If IsNull(Me!lstProjekte) Then
        MsgBox "Bitte wählen Sie zunächst einen Datensatz aus."
        Exit Sub
    End If
    DoCmd.OpenForm "frmProjekteDetailansicht", DataMode:=acFormEdit, _
        WindowMode:=acDialog, WhereCondition:="ProjektID = " & Me!lstProjekte
    Me!lstProjekte.Requery
End Sub

Listing 4.16: Anzeigen der Detailansicht eines Projekts

Die Routine hat exakt den gleichen Inhalt wie die Ereignisprozedur, die durch einen Klick auf die Schaltfläche Bearbeiten ausgelöst wird. Den enthaltenen Code extrahieren Sie am besten in eine separate neue Routine, die Sie von beiden Ereignisprozeduren aufrufen. Wie das aussieht, können Sie dem Klassenmodul des Formulars frmKundenListenfeld in der Beispieldatenbank \Kap_04\Formulare.accdb auf der Buch-CD entnehmen.

Nächster Abschnitt:

4.5.10 m:n- Beziehungen in Haupt- und Unterformular

© 2006-2008 André Minhorst Alle Rechte vorbehalten.