Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

3.6 Suchen in m:n-Beziehungen

3.7 Handhabung von 1:1-Beziehungen

In Kapitel 2, Abschnitt 2.5.6, »1:1-Beziehungen«, haben Sie erfahren, wie Sie Daten von Tabellen in zwei oder mehr per 1:1-Beziehung verknüpfte Tabellen aufteilen. Offen ist noch, wie Sie mit solchen Tabellen arbeiten, wenn es um die Eingabe, das Bearbeiten und Löschen von Daten geht. Mit einer geeigneten Abfrage lassen sich die Daten in per 1:1-Beziehung verknüpften Tabellen genauso bearbeiten wie die Daten einer einzelnen Tabelle. Als Beispiel dient die in Kapitel 2 vorgestellte Beziehung, bei der die erste Tabelle der 1:1-Beziehung Personendaten und die zweite Tabelle Erweiterungsdaten zu den Daten der ersten Tabelle enthält (siehe Abbildung 3.26).

Abbildung 3.26: 1:1-Beziehung zwischen Personen auf der einen und Angestellten und freien Mitarbeitern auf der anderen Seite

Für die Bearbeitung ist lediglich interessant, ob Sie Personen mit der Ausprägung »Angestellter« oder mit der Ausprägung »freier Mitarbeiter« behandeln möchten. Wenn Sie die Daten der Angestellten bearbeiten wollen, verwenden Sie die in Abbildung 3.27 abgebildete Abfrage.

Die Abfrage enthält alle Felder der beiden Tabellen mit Ausnahme des Primärschlüsselfeldes der Tabelle tblAngestellte. Auch das Fremdschlüsselfeld dieser Tabelle muss nicht angezeigt werden, aber zu Beispielzwecken sollten Sie es einbauen. In der Abbildung enthält die Abfrage aus Platzgründen nur die wichtigsten Felder der zugrunde liegenden Tabellen.

Abbildung 3.27: Zusammenführen der Tabellen einer 1:1-Beziehung per Abfrage

Wenn Sie die Abfrage in der Datenblattansicht anzeigen, können Sie dort Daten wie in einer ganz normalen Tabelle einfügen. Dabei kann allerdings folgendes Problem entstehen: Geben Sie einmal nur Daten in Felder der Tabelle tblPersonen ein (also etwa Vorname und Nachname), schließen Sie die Abfrage und öffnen Sie diese erneut. Der Datensatz scheint verschwunden, zumindest ist er im Sinne der 1:1-Beziehung nicht vorhanden.

Der Grund ist ganz einfach: Mit der getätigten Eingabe wird in der Tabelle tblAngestellte kein Datensatz angelegt und die Abfrage zeigt nur jene Kombinationen von Datensätzen der Tabellen tblPersonen und tblAngestellte an, bei denen der Inhalt des Feldes PersonID in beiden Tabellen gleich ist.

Den Beweis liefert ein kurzer Blick in die Tabelle tblPersonen: Dort findet sich nämlich der frisch angelegte Datensatz, allein das Pendant in der Tabelle tblAngestellte fehlt.

Geben Sie nun einen kompletten Datensatz ein und füllen Sie die Felder von links nach rechts, werden Sie feststellen, dass das Feld PersonID der Tabelle tblAngestellte automatisch mit dem gleichen Wert wie in der Tabelle tblPersonen gefüllt wird, sobald Sie die Eingabe in eines der Felder der Tabelle tblAngestellte abgeschlossen haben (siehe Abbildung 3.28).

Abbildung 3.28: Das Eingeben von Daten

Wenn Sie zuerst ein Feld der Tabelle tblAngestellte füllen, erhält das Feld PersonID dieser Tabelle zunächst den Wert 0. Erst wenn Sie mindestens ein Feld der Tabelle tblPersonen gefüllt haben, erhalten beide PersonID-Felder den über die Tabelle tblPersonen generierten Autowert.

Bleibt die letzte Möglichkeit: Sie füllen lediglich die Felder der Tabelle tblAngestellte und versuchen, den Datensatz zu speichern. Dies lässt Access nicht zu: Es weist mit einer entsprechenden Meldung darauf hin, dass wegen aktivierter referentieller Integrität der Beziehung zwischen den beiden Tabellen zunächst ein passender Datensatz in der Tabelle tblPersonen angelegt werden muss (siehe Abbildung 3.29).

Wie sorgen Sie nun dafür, dass vor dem Speichern alle benötigten Daten eingegeben werden, ohne dass Access seine eigenen Meldungen anzeigt? In der Abfrage funktioniert dies gar nicht: Es besteht keine Möglichkeit, die Meldung aus Abbildung 3.25 abzufangen - weder durch Setzen der Eingabe erforderlich-Eigenschaft noch durch die Verwendung der Gültigkeitsregel.

Das ist aber auch nicht schlimm, denn wie bereits erwähnt, sollen Tabellen und Abfragen ohnehin nicht zur direkten Dateneingabe verwendet werden. Und in den dafür vorgesehenen Formularen gibt es sowieso ganz andere Mittel. Mehr dazu erfahren Sie in Kapitel 4, Abschnitt 4.5.5, »1:1-Beziehungen«.

Abbildung 3.29: Diese Meldung erscheint, wenn Sie unvollständige Daten in eine Abfrage mit zwei per 1:1-Beziehung verknüpften Daten eingeben

Behandlung von 1:1-Beziehungen mit ergänzenden Feldern

Die oben vorgestellte 1:1-Beziehung dient dem »Vererben« der in der Tabelle tblPersonen gespeicherten Eigenschaften an speziellere Personentypen wie Angestellte oder freie Mitarbeiter.

Es gibt auch 1:1-Beziehungen mit wesentlich weniger anspruchsvollem Hintergrund. Die 1:1-Beziehung aus Abbildung 3.30 dient beispielsweise nur dazu, einer Tabelle ein Drucken-Feld hinzuzufügen, ohne dass die Tabelle tatsächlich erweitert wird.

Die passende Verknüpfung sieht wie in Abbildung 3.30 aus. Wenn Sie die beiden Tabellen so wie in Abbildung 3.31 in den Abfrageentwurf übernehmen, werden Sie nach dem Wechsel in die Datenblattansicht ein leeres Abfrageergebnis vorfinden (zumindest, wenn Sie noch keine Datensätze in der Tabelle tblMitarbeiterDrucken angelegt haben).

Der Grund ist einfach: Die Abfrage zeigt nur Daten, für die in beiden Tabellen ein Datensatz vorliegt. Da die Tabelle tblMitarbeiterDrucken im Urzustand zunächst keine Daten enthält, ist das Abfrageergebnis noch leer. Leider lässt sich über diese Abfrage auch kein Datensatz zur Tabelle tblMitarbeiterDrucken hinzufügen.

Um dies zu ermöglichen, ändern Sie in der Abfrage den Beziehungstyp wie in Abbildung 3.32 und erzeugen somit einen LEFT JOIN.

Damit werden nun definitiv alle Datensätze der Tabelle tblMitarbeiter angezeigt, auch wenn es nicht für alle einen verknüpften Datensatz in der Tabelle tblMitarbeiterDrucken gibt.

Abbildung 3.30: 1:1-Beziehung zum Anfügen eines einzelnen Feldes

Abbildung 3.31: Abfrage mit Drucken-Feld in der Entwurfsansicht

Nun sieht die Datenblattansicht der Abfrage schon wesentlich erfreulicher aus: Zu jedem Mitarbeiter wird das Drucken-Feld angezeigt, obwohl es eigentlich gar keine verknüpften Datensätze gibt. In der Tabelle tblMitarbeiterDrucken wird dann auch tatsächlich erst ein Datensatz angelegt, wenn Sie in der Abfrage einen Haken in das entsprechende Feld setzen (siehe Abbildung 3.33).

Wenn Sie das Feld in der Abfrage wieder deaktivieren, bleibt der Datensatz in der Tabelle tblMitarbeiterDrucken allerdings vorhanden. Um Platz in der Datenbank zu schaffen, empfiehlt es sich daher, regelmäßig alle Datensätze aus der Tabelle tblMitarbeiterDrucken zu entfernen, deren Feld Drucken den Wert False enthält.

Abbildung 3.32: Ändern der Verknüpfungseigenschaften

Abbildung 3.33: Das Drucken-Feld ist für alle Mitarbeiter verfügbar

Nächster Abschnitt:

3.8 Extremwerte per Abfrage ermitteln

© 2006-2008 André Minhorst Alle Rechte vorbehalten.