Home > Artikel > Ausgabe 4/2017 > Handyverwaltung II: Personen verwalten

Handyverwaltung II: Personen verwalten

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Im zweiten Teil der Artikelreihe zum Thema »Handyverwaltung« kümmern wir uns um die Formulare, die zur Verwaltung der Personen notwendig sind. Dazu gehören das Formular zur Anzeige der Personenübersicht mit allen in der Datenbank gespeicherten Personen sowie ein Detailformular, mit dem der Benutzer die Details der gespeicherten Personen bearbeiten sowie neue Personen anlegen kann.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1704_Handyverwaltung.accdb.

Vorbereitungen

Im Artikel Handyverwaltung I: Datenmodell haben wir die Tabellen für die hier vorgestellte Lösung definiert. Wenn Sie die Tabellen nun als Datenherkunft von Formularen und Berichten nutzen und die Felder der Tabellen und der darauf basierenden Abfragen in den Entwurf der Zielobjekte ziehen, werden üblicherweise Beschriftungen zu den resultierenden Steuerelementen wie Textfeldern, Kombinationsfeldern oder Kontrollkästchen hinzugefügt, die genau den Feldnamen entsprechen, die in den Tabellen definiert wurden. In den meisten Fällen können Sie die Feldnamen gleich weiterverwenden, aber manchmal sind Korrekturen erforderlich – beispielsweise, weil der Feldname wegen der üblichen Konventionen keinen Bindestrich wie in Person-ID enthält, sondern mit PersonID benannt wird. Andere gute Beispiele sind das Feld zum Speichern der E-Mail-Adresse, welches oft EMail genannt wird, oder das Fremdschlüsselfeld AnredeID, das wir mit Anrede bezeichnen wollen. Im Bezeichnungsfeld zu diesem Feld soll aber dann der Text E-Mail stehen. Es geht weiter mit Feldern, deren Umlaute beispielsweise durch ae statt ä ersetzt wurden.

Wenn Sie sich die Arbeit ersparen wollen, die Bezeichnungsfelder zu diesen Feldern nachträglich anzupassen, können Sie dies auch direkt im Tabellenentwurf erledigen. Dazu müssen Sie lediglich die Eigeschaft Beschriftung der jeweiligen Felder auf den gewünschten Wert einstellen, also beispielsweise für das Feld AnredeID den Wert Anrede hinzufügen (siehe Bild 1).

Anpassen der Beschriftung für zu erstellende Bezeichnungsfelder

Bild 1: Anpassen der Beschriftung für zu erstellende Bezeichnungsfelder

Die neuen Beschriftungen werden dann übrigens gleich in der Datenblattansicht angezeigt (siehe Bild 2) – und später in allen Bezeichnungsfeldern von Steuerelementen, die an die entsprechenden Felder der Datenherkunft gebunden sind.

Die neuen Beschriftungen werden bereits in der Datenblattansicht angezeigt.

Bild 2: Die neuen Beschriftungen werden bereits in der Datenblattansicht angezeigt.

Es gibt noch weitere Stellen, an denen wir das Aussehen der hinzugefügten Bezeichnungsfelder manipulieren können.

Personenübersicht erstellen

Als Erstes fügen wir der Datenbank eine Übersicht der Personen hinzu. Diese besteht aus einem Hauptformularnamens frmPersonenuebersicht und einem Unterformular namens sfmPersonenuebersicht. Das Unterformular erhält eine Abfrage auf Basis der Tabelle tblPersonen als Datenherkunft, die wir wie in Bild 3 definieren. Dabei ziehen wir alle Felder der Tabelle in das Entwurfsraster der Abfrage (beachten Sie die Reihenfolge der Felder Nachname und Vorname) und legen dann für die Felder Nachname und Vorname als Sortierung den Wert Aufsteigend fest. Speichern Sie die Abfrage dann unter dem Namen qryPersonenSortiert.

Entwurf der Abfrage für das Formular

Bild 3: Entwurf der Abfrage für das Formular

Danach fügen wir diese Abfrage dem Unterformular sfmPersonenuebersicht als Datenherkunft hinzu und ziehen alle Felder aus der Feldliste in den Detailbereich des Formularentwurfs. Stellen Sie die Eigenschaft Standardansicht auf den Wert Datenblatt ein und speichern und schließen Sie das Formular.

Danach öffnen Sie das neue Hauptformular frmPersonenuebersicht in der Entwurfsansicht und ziehen das Unterformular sfmPersonenuebersicht aus dem Navigationsbereich in den Detailbereich des Hauptformulars. Stellen Sie die Eigenschaften Horizontaler Anker und Vertikaler Anker des Unterformular-Steuerelements auf Beide ein. Falls Sie das automatisch mit hinzugefügte Bezeichnungsfeld verwenden wollen, stellen Sie die Eigenschaft Horizontaler Anker auf Oben und Vertikaler Anker auf Links ein. Außerdem erhalten die Eigenschaften Navigationsschaltflächen, Datensatzmarkierer, Trennlinien und Bildlaufleisten des Hauptformulars jeweils den Wert Nein und die Eigenschaft Automatisch zentrieren den Wert Ja.

Der Entwurf des Hauptformulars inklusive Unterformular sollte nun wie in Bild 4 aussehen.

Entwurf des Unterformulars mit der Datenblattansicht

Bild 4: Entwurf des Unterformulars mit der Datenblattansicht

Wenn Sie nun in die Formularansicht des Hauptformulars wechseln, finden Sie die Eingabemaske von Bild 5 vor. Hier fehlen nun noch ein paar Optionen, um die Details zu diesem Datensatz anzuzeigen. Die in der Tabelle tblPersonen gespeicherten Daten zur jeweiligen Person lassen sich zwar direkt hier ändern, aber wir erhalten keinen Einblick etwa auf die der Person zugeordneten Verträge oder Mobilfunkgeräte. Dies wollen wir einem eigenen Formular abbilden. Um dieses zu öffnen, müssen wir jedoch noch geeignete Steuer­elemente zum Formular frmPersonenuebersicht hinzufügen.

Datenblattansicht von Haupt- und Unterformular

Bild 5: Datenblattansicht von Haupt- und Unterformular

Das Formular frmPersonendetails

Zunächst einmal wollen wir jedoch das Detailformular erstellen – zunächst ohne die Daten aus den verknüpften Tabellen. Dazu erstellen Sie ein neues Formular namens frmPersonendetails. Binden Sie es wie das Unterformular sfmPersonenuebersicht über die Eigenschaft Datenherkunft an die Tabelle tblPersonen. Ziehen Sie dann alle Felder dieser Tabelle in den Detailbereich des Entwurfs. Außerdem wollen wir dem Formular bereits eine Schaltfläche zum Schließen des Formulars hinzufügen. Dieses beschriften wir mit dem Text OK und weisen ihm den Namen cmdOK zu (siehe Bild 6).

Entwurf des Formulars frmPersonendetails

Bild 6: Entwurf des Formulars frmPersonendetails

Dieses Formular soll es nicht ermöglichen, etwa mit den Navigationsschaltflächen durch einzelne Datensätze zu navigieren oder auch den aktuellen Datensatz mit dem Datensatzmarkierer zu markieren, um diesen dann löschen zu können. Also entfernen wir diese und andere Steuer­elemente durch Einstellen der Eigenschaften Datensatzmarkierer, Navigationsschaltflächen, Trennlinien und Bildlaufleisten auf den Wert Nein. Die Eigenschaft Automatisch zentrieren soll den Wert Ja erhalten.

Öffnen der Personendetails von der Personenübersicht aus

Nun soll der Benutzer, wenn er das Formular frmPersonenuebersicht vor sich sieht, einen der angezeigten Einträge in der Detailansicht öffnen können, also im Formular frmPersonendetails. Dazu gibt es verschiedene Möglichkeiten. Die offensichtlichste wäre, eine Schaltfläche mit der Beschriftung Details anzeigen hinzuzufügen, die dann per Mausklick den aktuell markierten Datensatz öffnet. Eine andere Alternative wäre, die Steuer­elemente der Datenblattansicht mit dem Ereignis Beim Doppelklicken auszustatten, damit der Benutzer den gewünschte Eintrag per Doppelklick in der Detailansicht anzeigen kann.

Beginnen wir mit der Schaltfläche cmdDetailsAnzeigen. Diese legen wir im Hauptformular direkt unter dem Unterformular an. Da wir für das Unterformular die Eigenschaft Vertikaler Anker auf Beide eingestellt haben, wird dieses beim Vergrößern der Höhe des Formulars nach unten vergrößert. Also müssen wir die Eigenschaft Vertikaler Anker für die Schaltfläche auf Unten einstellen, damit dieses nicht unter dem Unterformular verschwindet. Schließlich legen Sie eine Ereignisprozedur für diese Schaltfläche an, indem Sie für die Ereigniseigenschaft Beim Klicken den Wert [Ereignisprozedur] auswählen und auf die Schaltfläche mit den drei Punkten (...) klicken. Die nun im VBA-Editor angezeigte Prozedur ergänzen Sie wie in Listing 1.

Private Sub cmdDetailsAnzeigen_Click()

     Dim lngPersonID As Long

     lngPersonID = Me!sfmPersonenuebersicht.Form!PersonID

     DoCmd.OpenForm "frmPersonendetails", WindowMode:=acDialog, WhereCondition:="PersonID = " & lngPersonID

End Sub

Listing 1: Öffnen der Detailansicht einer Person

Die Prozedur ermittelt in der ersten Anweisung den Primärschlüsselwert des aktuell markierten Datensatzes des Unterformulars, und zwar über den Ausdruck Me!sfmPersonenuebersicht.Form!PersonID, und speichert diesen in der Variablen lngPersonID. Diesen Wert verwendet die zweite Anweisung, um einen Parameter namens WhereCondition zusammenzustellen, welcher an das aufgerufene Formular frmPersonendetails übergeben gleich als Filter angewendet wird. Der erste Parameter WindowMode erhält den Wert acDialog, damit das aufgerufene Formular solange den Fokus behält, bis der Benutzer dieses wieder schließt.

Das Ergebnis sieht dann wie in Bild 7 aus. Das als modaler Dialog geöffnete Formular frmPersonendetails zeigt genau den gewünschten Datensatz an.

Das vom Übersichtsformular geöffnete Formular frmPersonendetails

Bild 7: Das vom Übersichtsformular geöffnete Formular frmPersonendetails

Für die Schaltfläche cmdOK des Formulars frmPersonendetails legen wir die folgende Ereignisprozedur an, damit der Benutzer dieses später wieder schließen kann:

Private Sub cmdOK_Click()

DoCmd.Close acForm, Me.Name

End Sub

Wechseln zu anderen Datensätzen im Detailformular verhindern

Damit der Benutzer tatsächlich nur den aufgerufenen Datensatz im Formular frmPersonendetails anzeigen kann und nicht etwa zu einem leeren, neuen Datensatz wechselt, indem er etwa mit der Tabulator-Taste alle Felder durchläuft und dann nach dem Verlassen des letzten Feldes beim neuen Datensatz landet, stellen Sie die Eigenschaft Zyklus des Formulars frmPersonendetails auf den Wert Aktueller Datensatz ein.

Personendetails per Doppelklick öffnen

Die zweite Alternative zum Öffnen der Details zum gewünschten Personen-Datensatz soll ein Doppelklick auf einen der Einträge im Unterformular sfmPersonenuebersicht sein. Dazu legen wir für alle gebundenen Steuer­elemente im Unterformular die Ereignisprozedur Beim Doppelklicken an, die sämtlich mit der gleichen Code-Zeile füllen:

Private Sub AnredeID_DblClick(cancel As Integer)

Call DblClick(cancel)

End Sub

Private Sub Geburtsdatum_DblClick(cancel As Integer)

Call DblClick(cancel)

End Sub

Private Sub Nachname_DblClick(cancel As Integer)

Call DblClick(cancel)

End Sub

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!