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.10 Die Berichtsansicht

6.11 Anwendungsbeispiel für die Berichtsansicht

Dem Autor dieses Buchs erfüllt die Berichtsansicht einen großen Wunsch, und wahrscheinlich werden auch viele andere Entwickler dieses Feature begrüßen: Und das nicht unbedingt, weil es Berichte mit Formularfunktionen versieht, sondern weil es eine bisher fehlende Formular-Funktion nachliefert: Nämlich das Verwenden von Unterformularen in der Endlosansicht. Wie schön wäre das Entwicklerleben, wenn man in einem Formular mehrere Datensätze in der Endlosansicht und gleichzeitig mit diesen Datensätzen verknüpfte Daten anzeigen könnte! Und nun baut Microsoft eine neue Berichtsansicht und liefert genau dieses Feature. Um zu verstehen, was gemeint ist, schauen Sie sich doch einmal Abbildung 6.49 an.

Sie können damit etwa Projekte und alle in Zusammenhang mit den einzelnen Projekten angefallenen Tätigkeiten auflisten. Das ging vorher nur in der Vorschauansicht von Berichten oder mit zusätzlichen Tools wie Microsoft InfoPath. Nun ist das zwar auch ein Bericht, aber er wird nicht in Form einzelner Seiten, sondern in der Endlosansicht angezeigt und Sie können ihn in einem gewissen Rahmen automatisieren, um beispielsweise Projektzeiten hinzuzufügen, die vorhandenen Datensätze zu bearbeiten oder zu löschen. Das funktioniert zwar nicht direkt in der Berichtsansicht (die Inhalte von gebundenen Textfeldern lassen sich nicht bearbeiten, nur von ungebundenen), aber Sie können ja zur Bearbeitung auf ein Formular zurückgreifen.

Abbildung 6.49: Die Projektübersicht in der Berichtsansicht

Erst einmal schauen Sie sich aber in Abbildung 6.50 an, wie der obige Bericht in der Entwurfsansicht aussieht. Hier finden Sie etwa den gleichen Aufbau vor, wie ihn auch ein herkömmlicher Bericht zur Anzeige von Daten in einer 1:n-Beziehung liefern würde - mit Ausnahme der drei Schaltflächen. Die Schaltfläche im Gruppenkopf der Projekte heißt cmdNeueProjektzeit und löst beim Klicken die folgende Routine aus:

Private Sub cmdNeueProjektzeit_Click()
    DoCmd.OpenForm "frmProjektzeiten", WindowMode:= acDialog, _
         DataMode:= acFormAdd, OpenArgs:=Me.ProjektID
    Me.Requery
End Sub

Listing 6.12: Öffnen eines Formulars zum Anlegen einer neuen Projektzeit

Abbildung 6.50: Entwurfsansicht des Berichts, der in der Berichtsansicht mit vielen Funktionen glänzen soll

Die Routine öffnet ein Formular namens frmProjektzeiten, das im Entwurf wie in Abbildung 6.51 aussieht. Es ist an die Tabelle tblProjektzeiten gebunden und enthält zwei Ereignisprozeduren. Die erste löst das Formular beim Öffnen aus und prüft damit, ob die aufrufende Routine ein Öffnungsargument mitgeliefert hat. Falls ja, schreibt das Formular diese als Standardwert in das Feld ProjektID.

Abbildung 6.51: Das Formular zum Bearbeiten von Projektzeiten in der Entwurfsansicht

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

Listing 6.13: Eintragen eines Öffnungsarguments als Standardwert eines Steuerelements

Die zweite Routine wird durch die OK-Schaltfläche ausgelöst und schließt das Formular:

Private Sub cmdOK_Click()
    DoCmd.Close acForm, Me.Name
End Sub

Listing 6.14: Schließen des Formulars

Die beiden Schaltflächen cmdBearbeiten und cmdLoeschen im Detailbereich des Berichts lösen ebenfalls Ereignisprozeduren aus. Diese sehen wie folgt aus:

Private Sub cmdBearbeiten_Click()
    If Not IsNull(Me.ProjektzeitID) Then
        DoCmd.OpenForm "frmProjektzeiten", WindowMode:=acDialog, _
            DataMode:=acFormEdit, _
            WhereCondition:="ProjektzeitID = " & Me.ProjektzeitID
        Me.Requery
    End If
End Sub

Private Sub cmdLoeschen_Click()
    If Not IsNull(Me.ProjektzeitID) Then
        CurrentDb.Execute "DELETE FROM tblProjektzeiten " _
            & "WHERE ProjektzeitID = " & Me.ProjektzeitID
        Me.Requery
    End If
End Sub

Listing 6.15: Routinen zum Bearbeiten und Löschen vorhandener Projektzeiten

Der Clou ist, dass die Berichtsansicht direkt nach dem Ändern der Daten per Formular aktualisiert werden kann.

Leider ist die Berichtsansicht keinesfalls perfekt: So unterstützt sie leider keine Ereignisse, die man zum dynamischen Formatieren der Inhalte verwenden könnte: So brauchen Sie gar nicht erst Prozeduren für Ereignisse wie Beim Formatieren oder Beim Drucken anzulegen, wenn Sie damit in der Berichtsansicht etwas bewirken wollen. Leider kann man dadurch auch keine Bereiche ausblenden, wenn diese keine Daten enthalten. In diesem Fall kann es ja durchaus Projekte geben, für die noch keine Projektzeit angelegt wurde. Die Berichtsansicht zeigt dann einen - bis auf die beiden Schaltflächen - leeren Detailbereich an. Deshalb prüfen die obigen Listings auch, ob der aktuelle Detailbereich überhaupt einen Datensatz enthält, bevor das Formular zum Bearbeiten geöffnet oder der Datensatz gelöscht wird.

Die Beispiele dieses Kapitels finden Sie auf der Buch-CD in der Datenbankdatei \Kap_06\Berichte.accdb. In der Beispieldatenbank ist die Option zur Anzeige einzelner Fenster statt der Registeransicht eingestellt (Einstellung in den Access-Optionen unter Aktuelle Datenbank|Anwendungsoptionen|Dokumentfensteroptionen). In dieser Ansicht gibt es ein kleines Problem: Wenn Sie einen Bericht oder ein Formular maximieren, gibt es keine Schließen-Schaltfläche mehr. Sie können die Objekte dann entweder mit der Tastenkombination Strg + F4 oder mit dem Schließen-Eintrag des Kontextmenüs schließen.

Nächster Abschnitt:

7 VBA

© 2006-2008 André Minhorst Alle Rechte vorbehalten.