Wenn Sie ein Abonnement des Magazins 'Access im Unternehmen' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.
Kundenverwaltung mit Ribbon, Teil I
Bild 1: Option zur Anzeige von Formularen im Registerkartenformat
Im Beitrag »Ribbonklassen« haben wir gezeigt, wie Sie das Ribbon allein mit VBA-Code definieren können. Nun wollen wir diese Technik in einer kleinen Beispielanwendung demonstrieren, in der wir eine Adressenliste in einem Formular anzeigen und alle Befehle zu dieser Adressenliste im Ribbon einbauen – also etwa, um einen neuen Datensatz anzulegen, einen bestehenden Datensatz zu löschen oder die Details zu einem Datensatz anzuzeigen.
Dabei nutzen wir in diesem Fall im Gegensatz zu den meisten anderen Anwendungen den standardmäßig eingestellten Wert Dokumente im Registerkartenformat der Option Dokumentfensteroptionen in den Access-Optionen. Die Option Dokumentregisterkarten anzeigen wollen wir allerdings deaktivieren (s. Bild 1).
Bild 1: Option zur Anzeige von Formularen im Registerkartenformat
Hauptformular der Anwendung erstellen
Anschließend erstellen wir ein Formular, das alle Datensätze der Tabelle tblKunden in der Datenblattansicht anzeigen soll. Normalerweise würden wir eine solche Ansicht als Unterformular in ein Hauptformular integrieren, um noch weitere Steuerelemente für die Verwaltung der Daten in der Datenblattansicht bereitzustellen – etwa zum Anlegen neuer Datensätze, zum Löschen eines bestehenden Datensatzes oder auch um einen Datensatz zum Bearbeiten zu öffnen. Wenn wir allerdings einmal alle Befehle für den Zugriff auf die Adressdaten in das Ribbon verschieben, brauchen wir ja kein übergeordnetes Formular mehr.
Also legen Sie ein neues Formular an und speichern es unter dem Namen frmKundenuebersicht. Diesem Formular weisen Sie als Datenherkunft die Abfrage qryKunden zu, die alle Felder der Tabelle tblKunden enthält und diese alphabetisch nach dem Nachnamen der Lieferanschrift sortiert (s. Bild 2).
Bild 2: Datenherkunft für das HauptformularRegisterkartenformat und Screenshots
Während ich den Screenshot dieser Abfrage machen möchte, stelle ich übrigens fest, warum ich persönlich nie mit der Option Dokumente im Registerkartenformat arbeite: Damit lassen sich einfach keine vernünftigen Screenshots einzelner Access-Objekte machen. Eine Abfrage etwa wird komplett über das Access-Fenster verteilt. Ich müsste nun das Access-Fenster zusammenschrumpfen, um alles in adäquater Größe knipsen zu können und müsste den Screenshot dann noch manuell beschneiden, weil der Abfrageentwurf in diesem Fall kein eigenes Fenster ist, das man mit gängigen Screenshot-Tools leicht erfassen könnte. Also werde ich während der Erstellung dieses Beitrags wohl oder übel zwischen den einzelnen Ansichten wechseln müssen ...
Hauptformular anlegen
Die soeben erstellte Abfrage qryKunden legen wir als Datenherkunft für ein neues Formular namens frmKundenuebersicht fest. Danach ziehen Sie alle Felder der Datenherkunft aus der Feldliste in den Detailbereich des Formularentwurfs (s. Bild 3). Damit die Daten in der Datenblattansicht angezeigt werden, legen Sie für die Eigenschaft Standardansicht den Wert Datenblatt fest.
Bild 3: Entwurf des Hauptformulars frmKundenuebersicht
Ein Wechsel in die Formularansicht zeigt das Formular mit den gewünschten Daten, das wir nun um einige Funktionen anreichern wollen – und zwar, indem wir diese in das Ribbon der Anwendung aufnehmen.
Um alle Features des Ribbons zu erläutern, wollen wir die Kundenübersicht allerdings nicht direkt beim Öffnen der Anwendung einblenden, sondern zunächst nur einen Ribbon-Eintrag anzeigen, der das Öffnen der Kundenübersicht erlaubt. Erst beim Öffnen dieser Übersicht sollen dann die für dieses Formular spezifischen Befehle im Ribbon angezeigt werden. Wie dies gelingt, erfahren Sie in den folgenden Abschnitten.
Hinweis: Wenn Sie diese Anwendung als reine Adressverwaltung nutzen wollen, die immer die Kundenübersicht anzeigen soll, können Sie das Formular frmKundenuebersicht natürlich auch direkt als Startformular angeben. Dann wird das von uns für dieses Formular festgelegte Ribbon automatisch mit eingeblendet.
Vorbereitungen für das Anlegen des Ribbons
Wenn Sie unsere Ribbon-Klassen nutzen wollen, um das Ribbon zu programmieren, müssen Sie zuvor einige Access-Objekte aus der Beispieldatenbank in Ihre Zieldatenbank importieren. Dabei handelt es sich um die folgenden Objekte (bei allen Objekten außer dem Makro AutoExec handelt es sich um Standard- oder Klassenmodule):
- Startribbon
- Ribbons
- clsButton
- clsControls
- clsGroup
- clsGroups
- clsRibbon
- clsSeparator
- clsTabs
- clsTab
- mdlRibbonEnums
- mdlRibbons
- mdlTools
- mdlZwischenablage
- Makro AutoExec
Diese Objekte fügen Sie beispielsweise zur Zieldatenbank hinzu, indem Sie beide Datenbanken öffnen und nebeneinander platzieren und dann die Objekte von einem Navigationsbereich zum anderen ziehen.
Bevor Sie das Ribbon programmieren können, benötigen Sie auch noch einen Verweis auf die Bibliothek Microsoft Office x.0 Object Library (s. Bild 4). Diesen fügen Sie über den Verweise-Dialog hinzu (VBA-Editor, Menüeintrag Extras|Verweise).
Bild 4: Verweis auf die Office-BibliothekDen Inhalt des Moduls StartRibbon ersetzen Sie nun durch die Codezeilen aus Listing 1. Wir wollen im Startribbon zwei Schaltflächen anzeigen: Eines zum Öffnen der Kundenübersicht und eine zum Beenden der Anwendung. Für diese Schaltflächen müssen wir Variablen des Typs clsButton deklarieren und mit dem Schlüsselwort WithEvents ausstatten, da wir für diese ja Ereignisprozeduren hinterlegen wollen, die beim Anklicken der Button-Elemente ausgelöst werden.
Dim WithEvents btnKundenuebersicht As clsButton
Dim WithEvents btnBeenden As clsButton
Public Sub CreateRibbon()
Dim objRibbon As clsRibbon
Dim objTab As clsTab
Dim objGroup As clsGroup
Set objRibbon = Ribbons.Add("Main")
With objRibbon
.StartFromScratch = True
Set objTab = .Tabs.Add("tabKundenverwaltung")
With objTab
.Label = "Kundenverwaltung"
Set objGroup = .Groups.Add("grpUebersicht")
With objGroup
.Label = "Übersicht"
Set btnKundenuebersicht = .Controls.Add(msoRibbonControlButton, "btnKundenuebersicht")
With btnKundenuebersicht
.Label = "Kundenübersicht"
.Size = msoRibbonControlSizelarge
.Image = "users3"
End With
.Controls.Add msoRibbonControlSeparator
Set btnBeenden = .Controls.Add(msoRibbonControlButton, "btnBeenden")
With btnBeenden
.Label = "Beenden"
.Size = msoRibbonControlSizelarge
Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.