Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 5/2010.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Erfahren Sie, wie Sie Daten in Unterformularen leicht vom Hauptformular aus anlegen und löschen können.

Techniken

Formulare, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

UnterformularSteuern.mdb

Shortlink

www.access-im-unternehmen.de/739

Unterformulare: Daten anlegen und löschen

André Minhorst, Duisburg

Unterformulare zeigen meist vom Hauptformular abhängige Daten in der Datenblattansicht an - beispielsweise die Projekte eines Kunden oder die Artikel einer Kategorie. Manchmal dient das Hauptformular aber auch nur der Steuerung des Zugriffs auf die Daten im Unterformular und liefert etwa eine Einfügen-, Detailansicht/Bearbeiten- oder Löschen-Schaltfläche für die Bearbeitung der im Unterformular angezeigten Datensätze. In diesem Beitrag zeigen wir, wie Sie ein solches Formular anlegen und die Steuerelemente zum Steuern des Unterformulars ausstatten.

Man kann nicht zwingend davon ausgehen, dass Benutzer wissen, wie sie mit den üblichen Navigationselementen eines Formulars in der Datenblattansicht umgehen müssen - also beispielsweise mit dem Datensatzmarkierer oder der Navigationsleiste. Manchmal macht man sich das Leben einfacher, wenn man lediglich entsprechende Schaltflächen bereitstellt, um etwa einen Datensatz zu löschen oder einen neuen anzulegen.

Was das Bearbeiten von Daten in der Datenblattansicht angeht, kommt es sehr auf die Art der Bearbeitung an: Wenn man wirklich schnell Zugriff auf ein paar Werte haben möchte, die über mehrere Datensätze verteilt sind, macht ein Bearbeiten in der Datenblattansicht durchaus Sinn.

Oftmals tut man dem Benutzer damit jedoch keinen Gefallen: Es kann nämlich schnell passieren, dass man gerade in sehr breiten Datenblattansichten einen Feldinhalt ändert, der zum falschen Datensatz gehört - dies geschieht umso öfter, je weiter das zu bearbeitende Feld am rechten Rand des Unterformulars liegt.

Was also tun? Ganz einfach: Sie verwenden die Datenblattansicht einfach nur zum Betrachten, Durchsuchen und Sortieren der Daten und stellen für alle übrigen Aufgaben ein Detailformular zur Bearbeitung des jeweiligen Datensatzes zur Verfügung. Dieses zeigt immer nur einen Datensatz an und enthält eine OK- und eine Abbrechen-Schaltfläche, um Änderungen im jeweils geöffneten Datensatz zu bestätigen oder zu verwerfen.

Um einen Datensatz der Datenblattansicht in diesem Detailformular anzuzeigen, fügen Sie dem Hauptformular eine Schaltfläche zum Anfügen eines neuen Datensatzes (dies öffnet das Detailformular mit einem leeren, neuen Datensatz) und eine zum Bearbeiten des aktuell markierten Datensatzes hinzu. Um das Angebot abzurunden, können Sie die beiden Schaltflächen noch um eine dritte ergänzen, die zum Löschen des aktuell markierten Datensatzes im Unterformular dient.

Damit offensichtlich ist, dass sich diese drei Schaltflächen auf die Daten im Unterformular beziehen, sollten Sie diese entsprechend positionieren. Nachdem Unterformulare meistens eher am unteren Rand des Hauptformulars landen und dieses noch darunter in der Regel die Schaltflächen zum Schließen des Hauptformulars selbst unterbringt, fällt dieser Ort weg. Sinnvoll ist daher beispielsweise die Anordnung der Schaltflächen zum Steuern des Unterformulars direkt über dem Unterformular.

Im ersten Beispiel verwenden wie eine ganz einfache Adresstabelle als Datenquelle für das Unterformular in der Datenblattansicht (s. Abb. 1). AnredeID ist ein Fremdschlüsselfeld, das als Nachschlagefeld ausgelegt ist und die Daten der Tabelle tblAnreden anzeigt, die lediglich aus den beiden Feldern AnredeID und Anrede besteht.

pic001.png

Abb. 1: Entwurf der Beispieltabelle tblAdressen

Haupt- und Unterformular erstellen

Als Erstes erstellen Sie ein Unterformular, das Sie unter dem Namen sfmAdressen speichern und dem Sie als Datenherkunft die Tabelle tblAdressen zuweisen.

Ziehen Sie dann alle Felder der Tabelle aus der Feldliste in den Detailbereich der Entwurfsansicht. Stellen Sie die Eigenschaft Standardansicht auf den Wert Datenblatt ein.

Schließen Sie das Unterformular und legen Sie das Hauptformular an. Dieses erhält den Namen frmAdressen. Ziehen Sie das Unterformular sfmAdressen in den Detailbereich der Entwurfsansicht des Formulars frmAdressen, sodass sich ein Bild wie in Abb. 2 ergibt.

pic002.png

Abb. 2: Entwurf des Hauptformulars mit eingebautem Unterformular

Stellen Sie außerdem die Eigenschaften Trennlinien, Datensatzmarkierer, Navigationsschaltflächen und Bildlaufleisten auf Nein sowie die Eigenschaft Automatisch zentrieren auf Ja ein - das Hauptformular zeigt ja keine eigenen Daten an, daher brauchen wir dafür auch keine Navigationselemente.

Neu und Löschen im Unterformular

Wir legen nun zunächst zwei Schaltflächen namens cmdNeu und cmdLoeschen mit den Beschriftungen Neue Adresse und Adresse löschen im Hauptformular gleich oberhalb des Unterformulars an.

Diese Schaltflächen sollen die angegebene Aktion gleich im Unterformular durchführen, also den Datensatzmarkierer entweder auf einem neuen, leeren Datensatz positionieren oder den aktuell markierten Datensatz löschen. Später schauen wir uns die Variante an, bei der das Anlegen und zusätzlich das Bearbeiten über ein Detailformular erfolgen.

Wenn der Benutzer auf die Schaltfläche Neue Adresse klickt, soll schlicht der Fokus auf einem neuen, leeren Datensatz landen. Legen Sie die folgende Ereignisprozedur für das Ereignis Beim Klicken der Schaltfläche cmdNeu an:

Private Sub cmdNeu_Click()

    Me!sfmAdressen.SetFocus

    DoCmd.GoToRecord Record:=acNewRec

    End Sub

Diese braucht zwei Schritte zum Erreichen des Ziels: Als Erstes setzt sie den Fokus auf das Unterformular-Steuerelement. Dies ist gleichbedeutend mit dem Setzen des Fokus auf das Formular im Unterformular-Steuerelement, was Sie mit dieser Anweisung erreichen würden (und was letztlich genauer ist):

Me!sfmAdressen.Form.SetFocus

Die zweite Anweisung springt zu einem neuen, leeren Datensatz - der Benutzer kann nun gleich mit dem Eingeben der Daten beginnen.

Beim Löschen eines Datensatzes ist das Prinzip ähnlich. Allerdings schalten wir hier noch eine Meldung vor, die sicherstellt, dass der Datensatz tatsächlich gelöscht werden soll. Falls ja, setzen wir ebenfalls den Fokus auf das Unterformular-Steuerelement und löschen den Datensatz dann mit der RunCommand-Methode des Application-Objekts unter Verwendung des Parameters acDeleteRecord:

Private Sub cmdLoeschen_Click()

    If MsgBox("Wirklich löschen?", vbYesNo + _

    vbExclamation, "Löschvorgang") _

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Ereignisprozeduren implantieren

Zugriff auf Formulare

Ereignisprozeduren

Performanter Webzugriff auf MySQL-Datenbanken

Lookup-Daten verwalten

Formularposition speichern und wiederherstellen

Formulare im Blickpunkt

Modale Dialoge mal anders

Unterformulare im Gleichschritt

Suchformular für die Datenblattansicht

Excel-Import-Assistent im Eigenbau

Preise und Mehrwertsteuer verwalten

TreeView-Elemente im Griff

Listenfeld und Details in einem Formular

Undo in Formularen und Unterformularen

Konsistente Dateneingabe in Unterformulare

Benutzerdefinierte Formatierung

Benutzerverwaltung

HTML-Editor-Steuerelement

Formulare generieren

Suchformularassistent

Navigationsleiste im Eigenbau

Meldungsfenster im Eigenbau

Formulare öffnen

Steuerelemente zur Laufzeit verschieben

Ereignisse im Eigenbau

Google Earth ferngesteuert, Teil II

Formular-Assistenten

Standard-Lookupformulare

Temporäre Datensatzgruppen

Validieren mit Klasse

Änderungsdaten protokollieren

Transparenz und andere Effekte in Formularen

Zugriff auf Daten in Formularen und Steuerelementen

Formulare für die Dateneingabe

© 2003-2015 André Minhorst Alle Rechte vorbehalten.