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!

6.7.1 Einzelne Tabellen

6.7.2 1:n-Beziehungen

Zur Darstellung von 1:n-Beziehungen müssen Sie nicht unbedingt, wie bereits weiter oben angedeutet, auf Unterformulare oder Steuerelemente wie Listenfelder zugreifen. In einem Bericht reicht es aus, die verknüpften Tabellen zu einer Datensatzquelle zusammenzufassen und eine entsprechende Gruppierung anzulegen. Natürlich gibt es hier Ausnahmen wie etwa die Anzeige mehrerer mit der Mastertabelle verknüpfter Detailtabellen. Dazu jedoch später mehr. Die Darstellung einer 1:n-Beziehung lässt sich anschaulich an den Artikeln und Kategorien der Nordwind-Datenbank erläutern. Dazu soll einfach der Bericht aus dem vorherigen Beispiel so umgestaltet werden, dass jede Kategorie mit den enthaltenen Artikeln auf je einer Seite erscheint.

Datensatzquelle des 1:n-Berichts

Dazu erweitern Sie zunächst die Datensatzquelle des Berichts um die Tabelle Kategorien und ziehen alle Felder der beiden Tabellen in den Abfrageentwurf (siehe Abbildung 6.30).

Gruppierung statt Unterformular

Statt des bei der Verwendung von Formularen notwendigen Unterformulars oder Listenfeldes zur Darstellung von verknüpften Daten wenden Sie bei Berichten vorzugsweise Gruppierungen an. Im vorliegenden Beispiel sollen eine Kategorie und die dazugehörenden Artikel auf einer Seite angezeigt werden. Also gruppieren Sie die Datensatzquelle nach Kategorien. Jede Gruppe erhält einen speziellen Kopfbereich, den Gruppenkopf. In diesem werden Daten wie Name der Kategorie, Beschreibung oder das in der Tabelle enthaltene Bild abgelegt. Um eine Gruppierung anzulegen, klicken Sie im Bereich Gruppieren, Sortieren und Summe auf die Schaltfläche Gruppe hinzufügen und stellen unter Gruppieren nach das Feld ein, nach dem gruppiert werden soll. Außerdem legen Sie hier fest, ob die Gruppe einen Gruppenkopf und/oder -fuß erhalten soll. In diesem Fall reicht ein Gruppenkopf aus (siehe Abbildung 6.31). Fügen Sie außerdem eine Sortierung nach dem Artikelnamen hinzu.

Abbildung 6.30: Datensatzquelle eines Berichts zur Anzeige der Kategorien und der enthaltenen Artikel

Achten Sie beim Anlegen von Sortierungen und Gruppierungen darauf, dass diese von oben nach unten abgearbeitet werden. In diesem Fall gilt: Gruppierungen müssen nach oben, Sortierungen innerhalb der gruppierten Daten nach unten. Der Detailbereich soll wie im Bericht rptArtikelUebersicht die Artikel der jeweiligen Kategorie in tabellarischer Form anzeigen. Natürlich benötigen Sie auch hier Spaltenüberschriften. Wie Abbildung 6.31 zeigt, befindet sich der Seitenkopf-Bereich über dem Gruppenkopf - dort würden die Feldüberschriften nicht gut aussehen. Also fügen Sie diese einfach im unteren Bereich des Gruppenkopfes der Kategorien ein.

Abbildung 6.31: Entwurf des Berichts zur Anzeige von Artikeln nach Kategorie

Eine Gruppe je Seite

Wenn Sie nun in die Seitenansicht wechseln, werden die Artikel zwar nach Kategorien gruppiert, aber die Kategorien folgen ohne Seitenumbruch direkt aufeinander und stehen nicht auf je einer Seite. Dabei fällt gleichzeitig auf, dass Kategorien, die mehr Artikel enthalten, als auf eine Seite passen, zwar auf der nächsten Seite fortgesetzt werden, aber ohne Feldüberschriften. Das ist auch logisch, denn diese werden ja bisher nur im Gruppenkopf angezeigt.

Damit für jede Gruppierung eine neue Seite erzeugt wird, stellen Sie die Eigenschaft Neue Seite des Bereichs auf den Wert Vor Bereich ein (siehe Abbildung 6.32). Damit kennen Sie nun auch alle Möglichkeiten, Eigenschaften der Kopf- und Fußbereiche von Gruppierungen einzustellen - nämlich im Bereich Gruppieren, Sortieren und Summe und im entsprechenden Eigenschaftsfenster.

Abbildung 6.32: Eigenschaften des Gruppenkopfs eines Bereichs

Feldüberschriften auf Folgeseiten von Gruppierungen

Fehlen noch die Feldüberschriften für Kategorien, die mehr als eine Seite füllen. Bisher dient der Kopfbereich der Gruppe KategorieID quasi als Seitenkopf; nun benötigen Sie den Seitenkopf selbst. Kopieren Sie hier die Feldüberschriften aus dem Kategorien-Kopfbereich hinein und fügen Sie auch eine Kopie des Feldes Kategoriename aus diesem Bereich hinzu. Löschen Sie den Inhalt der Eigenschaft Steuerelementinhalt dieses Steuerelements; es wird später per VBA gefüllt (siehe Abbildung 6.33).

Eine VBA-Prozedur ist es auch, die den Seitenkopf einblendet, wenn der Detailbereich eine Fortsetzung der vorherigen Seite ist. Die entsprechende Prozedur wird durch die Ereigniseigenschaft Beim Drucken ausgelöst. Sie fragt die Eigenschaft WillContinue ab, die genau die gesuchte Information liefert, die Sie hier benötigen. Ist der Wert False, handelt es sich nicht um eine Fortsetzung der Artikel einer Kategorie - hier wird dann der Kopfbereich der neuen Kategorie angezeigt. Interessant wird es, wenn WillContinue den Wert True zurückliefert - in diesem Fall wird der Seitenkopf eingeblendet und das Textfeld txtKategoriename mit dem Namen der aktuellen Kategorie und dem Text »(Fortsetzung)« gefüllt (siehe Beispieldatenbank, Bericht rptKategorienUndArtikel).

Private Sub Detailbereich_Print(Cancel As Integer, PrintCount As Integer)
    If Me.Detailbereich. WillContinue = True Then
        Me.Seitenkopfbereich.Visible = True
        Me!txtKategoriename = Me!Kategoriename & " (Fortsetzung)"
    Else
        Me.Seitenkopfbereich.Visible = False
    End If
End Sub

Listing 6.9: Der Seitenkopf wird eingeblendet, wenn der Detailbereich eine Fortsetzung der vorherigen Seite ist

Abbildung 6.33: Der neue Seitenkopf soll nur zum Einsatz kommen, wenn der Kategorien-Kopfbereich nicht angezeigt wird

Nächster Abschnitt:

6.7.3 m:n-Beziehungen

© 2006-2008 André Minhorst Alle Rechte vorbehalten.