Home > Artikel > Ausgabe 10/2012 > Datensätze individuell auswählen

Datensätze individuell auswählen

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).

Es gibt verschiedene Gelegenheiten, zu denen Datensätze nicht nach verschiedenen, auf den enthaltenen Feldern basierenden Kriterien selektiert werden können. In einem solchen Fall ist die individuelle Selektion der Datensätze gefragt. Dazu gibt es verschiedene Varianten. Dieser Artikel zeigt, wie Sie Daten eines Unterformulars in der Datenblattansicht mithilfe eines Kontrollkästchens zur Auswahl hinzufügen oder daraus entfernen können.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1210_DatensaetzeAuswaehlen.mdb.

Beispieldaten

Als Beispieldaten verwenden wir die Tabelle tblKunden der Beispieldatenbank. Diese Tabelle enthält allgemeine Kundendaten wie Name, Anschrift, Telefonnummern und die E-Mail-Adresse. Den Entwurf dieser Tabelle entnehmen Sie Bild 1.

Beispieltabelle für die Auswahl von Datensätzen

Bild 1: Beispieltabelle für die Auswahl von Datensätzen

Ausgewählte Datensätze markieren

Während Sie die gewünschten Datensätze in den meisten Fällen durch den Einsatz entsprechender Filterkriterien ermitteln, ist dies hier nicht der Fall.

Wie aber sollen die individuell ermittelten Datensätze markiert werden? Der einfachste Weg ist, einfach ein Feld etwa namens Markiert und mit dem Felddatentyp Ja/Nein zum Tabellenentwurf hinzuzufügen.

Das Ergebnis sieht dann in der Datenblattansicht wie in Bild 2 aus. Der Benutzer kann nun die gewünschten Datensätze markieren und etwa in einer Abfrage alle Datensätze zutage liefern, deren Feld Markiert den Wert True enthält.

Datenblattansicht mit Markiert-Feld

Bild 2: Datenblattansicht mit Markiert-Feld

Nun soll der Benutzer aber nicht direkt mit den Tabellen arbeiten, sondern in einem Formular, und dieses soll sowohl die Möglichkeit zum Markieren der Daten als auch zum Ausführen bestimmter Aktionen auf Basis dieser Daten bieten.

Also erstellen Sie zwei Formulare, wobei das Hauptfor­mular frmDatenauswahl das Unterformular sfm­Da­ten­aus­wahl aufnimmt. Das Unterformular wiederum verwendet die Tabelle tblKunden als Daten­herkunft und zeigt all ihre Felder in der Datenblattansicht an.

In der Entwurfsansicht sehen die beiden Formulare zunächst wie in Bild 3 aus. Um dies zu erreichen, erstellen Sie zunächst das Unterformular sfmDatenauswahl, weisen der Eigenschaft Datenherkunft die Tabelle tblKunden zu, stellen die Eigenschaft Standardansicht auf Datenblatt ein und fügen die anzuzeigenden Felder zur Detailansicht des Formularentwurfs hinzu.

Haupt- und Unterformular der Beispieldatenbank

Bild 3: Haupt- und Unterformular der Beispieldatenbank

Speichern Sie das Unterformular unter dem Namen sfmDatenauswahl. Erstellen Sie dann das Hauptformular frmDatenauswahl und ziehen Sie das Unterformular aus dem Datenbankfenster (bis Access 2003) beziehungsweise dem Navigationsbereich (ab Access 2007) in den Entwurf des Hauptformulars.

Da wir im Hauptformular außerdem keine Navigationsschaltflächen, Bildlaufleisten, Trennlinien oder Datensatzmarkierer benötigen, stellen Sie die entsprechenden Eigenschaften jeweils auf den Wert Nein ein. Außerdem erhält die Eigenschaft Automatisch zentrieren den Wert Ja.

Das Ergebnis zeigt sich dann nach dem Wechsel in die Formularansicht des Hauptformulars (siehe Bild 4). Um die Nutzbarkeit zu erhöhen, verschieben Sie das Feld zum Markieren der Datensätze ganz nach vorn.

Anzeige der auszuwählenden Datensätze im Formular frmDatenauswahl

Bild 4: Anzeige der auszuwählenden Datensätze im Formular frmDatenauswahl

Dies gelingt ganz einfach, indem Sie den Spaltenkopf des Feldes anklicken und diesen per Drag and Drop nach vorn verschieben.

Damit sind Sie grundsätzlich fertig – die Datensätze können nun markiert und über eine entsprechende Abfrage für verschiedene Aktionen wie etwa den Versand einer Rechnung, einer E-Mail et cetera ausgelesen werden.

Aus- und Abwählen aller Datensätze

So leicht wollen wir es uns allerdings nicht machen: Etwas mehr Komfort als in der Datenblattansicht der Tabelle könnte die Lösung schon gebrauchen. Also fügen wir zunächst Schaltflächen hinzu, mit denen Sie alle Datensätze auswählen und mit denen Sie alle Einträge wieder abwählen können.

Diese ordnen Sie etwa so wie in Bild 5 an. Benennen Sie die Schaltflächen cmdAlleAuswaehlen und cmdAlleAbwaehlen. Danach legen wir die Ereignisprozeduren an, die beim Anklicken der Schaltflächen ausgeführt werden sollen, zunächst für die Schaltfläche cmdAlleAuswaehlen.

Hinzufügen von Schaltflächen zum Auswählen oder Abwählen aller Einträge

Bild 5: Hinzufügen von Schaltflächen zum Auswählen oder Abwählen aller Einträge

Dazu wählen Sie für die Eigenschaft Beim Klicken dieser Schaltfläche in der Entwurfsansicht des Formulars den Eintrag [Ereignisprozedur] aus und klicken dann auf die Schaltfläche mit den drei Punkten (...).

Es erscheint der VBA-Editor, der automatisch ein neues Klassenmodul namens Form_frmDatenauswahl mit der nackten Prozedur angelegt hat. Diese ergänzen Sie wie folgt:

Private Sub cmdAlleAuswaehlen_Click()

     Dim db As DAO.Database

     Set db = CurrentDb

     db.Execute "UPDATE tblKunden " _

         & "SET Markiert = True", dbFailOnError

     Me!sfmDatenauswahl.Form.Requery

     Set db = Nothing

End Sub

Diese Prozedur erstellt zunächst einen Verweis auf die aktuelle Datenbank und speichert diesen in der Variablen db. Diese Objektvariable mit dem Datentyp Database bietet die Methode Execute an, der Sie SQL-Aktionsabfragen als Parameter übergeben können (mehr dazu im Artikel Aktualisierungsabfragen mit VBA).

Die Abfrage UPDATE tblKunden SET Markiert = True ändert den Wert des Feldes Markiert für alle in der Tabelle tblKunden enthaltenen Datensätze auf den Wert True.

Nach dieser Änderung aktualisiert die Prozedur noch die Datenherkunft des Unterformulars sfmDatenauswahl, sodass gleich alle Kontrollkästchen in der Spalte Markiert mit einem Haken versehen werden (siehe Bild 6).

Markieren aller Einträge der Datenherkunft des Unterformulars

Bild 6: Markieren aller Einträge der Datenherkunft des Unterformulars

Genau den entgegengesetzten Effekt soll das Anklicken der Schaltfläche cmdAlleAbwaehlen auslösen. Die Prozedur für das Ereignis Beim Klicken dieser Schaltfläche sieht jedoch bis auf den Prozedurkopf und eine einzige Zeile genauso aus wie die zuvor beschriebene.

Die folgenden Zeilen zeigen daher nur den Ausschnitt mit den geänderten Zeilen:

Private Sub cmdAlleAbwaehlen_Click()

     ...

     db.Execute "UPDATE tblKunden " _

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!