Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
In den beiden Artikeln Datensätze individuell auswählen (Ausgabe 10/2012) und Selektion im Datenblatt (aktuelle Ausgabe) nutzen wir ein zusätzliches Feld in der betroffenen Tabelle, um Datensätze individuell auswählen zu können. Die Methode ist sehr praktisch, kommt jedoch an ihre Grenzen, wenn Sie keinen Zugriff auf die betroffene Tabelle haben. Das kann passieren, wenn sich diese in einem Backend befindet, dessen Daten Sie nicht ändern können, weil Sie keinen Zugriff haben oder keine Berechtigung. Ein weiterer wichtiger Grund, die Selektionsdaten in einer eigenen Tabelle zu speichern, sind Mehrbenutzeranwendungen. Da bietet es sich an, die Daten bezüglich der Ansicht im Frontend zu speichern.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1703_IndividuelleAuswahl.accdb. Wir setzen auf der im Artikel Selektion im Datenblatt beschriebene Lösung auf. Dabei entfernen wir einfach das Feld Selektiert aus der Tabelle tblKunden und fügen dieses dann über eine zusätzliche Tabelle wieder hinzu. Die übrigen Schritte werden in diesem Artikel erläutert.
Tabelle hinzufügen
Wir gehen also nun davon aus, dass die Tabelle tblKunden sich in einer Backend-Datenbank befindet, deren Entwurf wir nicht ändern können. Daher entfernen wir das Feld Selektiert aus dieser Tabelle und speichern die Tabelle.
Die Tabelle, in der wir die Selektionsdaten speichern wollen, soll den Namen tblKundenSelektion erhalten und zwei Felder enthalten. Das erste heißt KundeID und wird als Zahlenfeld mit einem eindeutigen Index versehen. Das zweite Feld ist das Feld, das wir aus der ursprünglichen Tabelle entnommen haben – es heißt dementsprechend Selektiert (siehe Bild 1).
Bild 1: Die Tabelle mit dem Selektionsfeld
Damit wir das Feld Selektiert sauber mit der Tabelle tblKunden verbinden können, müssen wir eine 1:1-Beziehung zwischen den beiden Tabellen anlegen. Das bedeutet, dass es für jeden Datensatz der Tabelle tblKunden nur maximal einen Datensatz in der Tabelle tblKundenSelektion geben darf, dessen Wert im Feld KundeID mit dem Feld KundeID in tblKunden übereinstimmt.
Dazu stellen wir die Verbindung zwischen den beiden Tabellen her, und zwar im Beziehungen-Fenster von Access. Diesem fügen Sie die beiden Tabellen tblKunden und tblKundenSelektion hinzu. Anschließend ziehen Sie den Beziehungspfeil vom Feld KundeID der Tabelle tblKunden auf das gleichnamige Feld der Tabelle tblKundenSelektion und legen Sie für die Beziehung Referenzielle Integrität und Löschweitergabe fest (siehe Bild 2). Versuchen Sie dies andersherum, erhalten Sie beim Versuch, referenzielle Integrität festzulegen eine Fehlermeldung. Hier geht es um die Richtung, in der die Beziehung angelegt wird: Access prüft im letzteren Fall, der einen Fehler auslöst, ob die Tabelle tblKunden Datensätze mit Werten im Feld KundeID enthält, die nicht in der Tabelle tblKunden-Selektion enthalten sind. Und das ist zu diesem Zeitpunkt definitiv der Fall, da wir die Tabelle tblKundenSelektion ja soeben erst angelegt haben.
Bild 2: Herstellen der Beziehung zwischen den beiden Tabellen
In der Abbildung erkennen Sie auch, dass Access keine 1:n-Beziehung angelegt hat, wie dies üblicherweise der Fall ist, sondern eine 1:1-Beziehung. Woran erkennt Access dies Ganz einfach: Wir haben auf beiden Seiten Felder, für die ein eindeutiger Index festgelegt ist. Und wenn keines der Felder einen Wert mehr als einmal enthalten kann, dann kann man zwischen diesen Feldern auch keine 1:n-Beziehung anlegen.
Sie können nun testweise einen Datensatz in der Tabelle tblKundenSelektion anlegen, der in der Tabelle KundeID einen Wert enthält, der auch in der Tabelle tblKunden vorkommt. Wenn Sie im Feld KundeID der Tabelle tblKundenSelektion einen Wert anlegen, der nicht im Feld KundeID der Tabelle tblKunden vorkommt, löst dies einen Fehler aus.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo