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!

2.1.4 Eigenschaften festlegen

2.1.5 Beziehungen herstellen

Das Herstellen einer Beziehung zwischen zwei Tabellen setzt voraus, dass die Datenbank eine Tabelle enthält, die auf die Daten einer anderen Tabelle verweisen soll. Erstere enthält dazu ein Fremdschlüsselfeld und heißt Detailtabelle. Das Fremdschlüsselfeld nimmt später Daten auf, die aus dem Primärschlüsselfelds der anderen Tabelle stammen, der so genannten Mastertabelle. Nun können Sie ohne irgendwelche weiteren Maßnahmen Daten aus dem Primärschlüsselfeld der Mastertabelle in das Fremdschlüsselfeld der Detailtabelle eintragen und stellen damit schon eine Beziehung zwischen den beiden Tabellen her. Dies von Hand zu erledigen ist jedoch ziemlich aufwändig, also bietet Access einige Hilfsmittel, die sowohl die Auswahl der verknüpften Datensätze als auch die Prüfung der Konsistenz übernehmen.

Gleiche Datentypen

Grundvoraussetzung für das Herstellen einer Beziehung mit referentieller Integrität (was das ist, erfahren Sie weiter unten) zwischen zwei Tabellen ist, dass das Fremdschlüsselfeld der Detailtabelle und das Primärschlüsselfeld der Mastertabelle den gleichen Datentyp haben. In der Regel ist dies der Datentyp Zahl (Long). Wenn Sie keine referentielle Integrität benötigen, können Sie auch andere Kombinationen einsetzen.

Nachschlage-Assistent

Die einfachste Möglichkeit besteht darin, dem Verknüpfungsfeld den Wert Nachschlage-Assistent aus der Liste der Datentypen zuzuweisen. Dies startet einen Assistenten, der alle notwendigen Informationen abfragt. Dieses Buch will Ihnen aber nicht den Umgang mit Assistenten, sondern Techniken und Hintergründe beibringen und deshalb folgt nun eine Beschreibung, wie Sie das, was der Nachschlage-Assistent so produziert, selbst auf die Beine stellen.

Beziehung herstellen

Das Herstellen der Beziehung erledigen Sie im Dialog Beziehungen (auch Beziehungen-Fenster genannt). Sie öffnen dieses Fenster mit dem Ribbon-Eintrag Datenbanktools|Einblenden/Ausblenden|Beziehungen (siehe Abbildung 2.17).

In dieser Abbildung übernimmt die Tabelle tblKunden die Rolle der Mastertabelle und tblProjekte die der Detailtabelle.

Das Feld KundeID der Tabelle tblProjekte soll einmal die Inhalte des Feldes KundeID der Tabelle tblKunden aufnehmen - und das auf möglichst einfache Weise.

Abbildung 2.17: Das Beziehungen-Fenster mit zwei verknüpften Tabellen

Der Kontextmenüeintrag Tabelle anzeigen öffnet einen Dialog mit allen in der Datenbank enthaltenen Tabellen. Wählen Sie hier die Tabellen aus, zwischen denen Sie eine Beziehung herstellen möchten (siehe Abbildung 2.18).

Wenn Sie alle Tabellen im Beziehungen-Fenster anzeigen möchten, die bereits Teil einer Beziehung sind, können Sie dies auch über den Eintrag Alle anzeigen aus dem Kontextmenü erledigen.

Sie können die gewünschten Tabellen auch direkt aus dem Navigationsbereich in das Beziehungen-Fenster ziehen, wobei auch eine Mehrfachauswahl möglich ist (das Datenbankfenster älterer Access-Versionen bot diese Möglichkeit nicht).

Zum Herstellen der Beziehung ziehen Sie nun das Primärschlüsselfeld der Mastertabelle auf das Fremdschlüsselfeld der Detailtabelle und lassen es dort fallen. Access legt eine passende Verbindungslinie zum Kennzeichnen der Beziehung an.

Wenn Sie nun mit der rechten Maustaste auf diese Linie klicken und den Kontextmenüeintrag Beziehung bearbeiten auswählen, zeigt Access einen Dialog an, mit dem Sie referentielle Integrität, Lösch- und Aktualisierungsweitergabe einstellen können.

Was das alles ist, erfahren Sie weiter unten unter 2.4.5, »Referentielle Integrität«.

Abbildung 2.18: In diesem Dialog wählen Sie die im Beziehungen-Fenster anzuzeigenden Tabellen aus

Auswahl von per 1:n-Beziehung verknüpften Daten

Das Herstellen einer Beziehung ist nur ein Teil der Arbeit, die Ihnen normalerweise der Nachschlage-Assistent abnehmen würde.

Der Großteil besteht im Anlegen eines Nachschlagefeldes, mit dem Sie die Daten aus der verknüpften Tabelle bequem auswählen können. Alles, was der Nachschlage-Assistent dazu beiträgt, ist das Anpassen weniger Eigenschaften - und das können Sie auch von Hand erledigen.

Im obigen Beispiel mit der Kunden- und der Projektetabelle legen Sie die erforderlichen Eigenschaften für das Feld KundeID der Tabelle tblProjekte fest. Öffnen Sie diese Tabelle in der Entwurfsansicht (vom Beziehungen-Fenster geht dies schnell über das Kontextmenü der Tabelle) und markieren Sie das Feld KundeID.

Im unteren Bereich wechseln Sie nun zur Registerseite Nachschlagen. Dort finden Sie zunächst nur eine einzige Eigenschaft namens Steuerelement anzeigen vor, was sich aber ändert, wenn Sie deren Wert auf Kombinationsfeld einstellen (siehe Abbildung 2.19).

Mit einigen der anderen Eigenschaften sorgen Sie nun für die Bevölkerung Ihres Nachschlagefeldes:

Abbildung 2.19: Die Eigenschaften eines Verknüpfungsfeldes, das als Nachschlagefeld ausgelegt werden soll

  • Herkunftstyp: Stellen Sie hier den Wert Tabelle/Abfrage ein. Wozu der Wert Wertliste dient, erfahren Sie weiter unten.
  • Datensatzherkunft: Legt fest, aus welcher Tabelle oder Abfrage die Daten stammen. Üblicherweise gibt man hier einen SQL-Ausdruck an beziehungsweise generiert diesen über die Abfrage-Entwurfsansicht, die Sie mit der Schaltfläche mit den drei Punkten (...) öffnen. Prinzipiell muss die Abfrage zunächst das Primärschlüsselfeld der zu verknüpfenden Tabelle enthalten, weil dessen Inhalt gespeichert und darüber die Beziehung hergestellt wird. Access erlaubt zusätzlich die Anzeige weiterer Felder und das Ausblenden des Primärschlüsselwertes. Sie brauchen also den Primärschlüssel zum Speichern und ein oder mehrere weitere Felder zum Anzeigen, also sieht die Datensatzherkunft in diesem Beispiel so aus:
  • SELECT KundenID, Kunde FROM tblKunden;

  • Gegebenenfalls sortieren Sie die Daten alphabetisch nach den Kunden, was die folgende Datensatzherkunft nach sich ziehen würde:
  • SELECT KundenID, Kunde FROM tblKunde ORDER BY Kunde;

  • Gebundene Spalte: Diese Eigenschaft legt fest, welche Spalte der Datensatzherkunft gespeichert werden soll. Standardmäßig ist dies die erste Spalte, was auch in diesem Beispiel passt.
  • Spaltenanzahl: Gibt an, wie viele Spalten der Datensatzherkunft von links aus gesehen angezeigt werden sollen.
  • Spaltenbreiten: Legt die Breite der angezeigten Spalten fest. Wenn die erste die gebundene Spalte ist und diese nicht angezeigt werden soll (was üblicherweise so ist) und es nur noch eine weitere Spalte gibt, tragen Sie hier den Wert 0cm ein. Damit wird die erste Spalte mit dem Primärschlüssel quasi ausgeblendet und die nächste Spalte nimmt den kompletten verfügbaren Platz ein.
  • Zeilenanzahl: Hiermit legen Sie fest, wie viele Zeilen beim Ausklappen angezeigt werden sollen (standardmäßig seit Access 2007 auf 16 eingestellt, alter Standardwert war 8).
  • Listenbreite: Legt die Gesamtbreite der Liste fest.
  • Es gibt eine Reihe von Varianten bei der Gestaltung von Nachschlagefeldern auf Basis einer Tabelle oder Abfrage, die mit der Vorgehensweise beim Erstellen von Kombinationsfeldern identisch sind. Für weitere Informationen lesen Sie daher Kapitel 5, »Steuerelemente«, in Abschnitt 5.3, »Kombinationsfelder«.

    Wenn Sie ein Nachschlagefeld definiert haben, können Sie damit eine Menge anfangen: Access zeigt es nicht nur in der Datenblattansicht der jeweiligen Tabelle oder auf dieser Tabelle aufbauenden Abfragen an (aber dort soll der Anwender ja ohnehin keine Daten ändern), sondern übernimmt die Nachschlagefelder auch standardmäßig in Formulare, wenn Sie dort das passende Feld anlegen.

    Dazu richtet Access einfach ein Kombinationsfeld mit den passenden Eigenschaften ein. Manchmal hat dies aber auch Nachteile: Wenn Sie einmal die tatsächliche ID des verknüpften Datensatzes ermitteln möchten, müssen Sie die Einstellungen für das Nachschlagefeld entsprechend ändern. Wenn Sie dies verhindern möchten und die Fremdschlüsselfelder in der Tabellendefinition als einfache Textfelder festlegen, müssen Sie diese in Formularen bei Bedarf manuell in Kombinationsfelder umwandeln.

    Bearbeiten der Einträge eines Nachschlagefeldes

    Bisher mussten Sie, wenn Sie die Einträge eines Nachschlagefeldes für die Auswahl von per 1:n-Beziehung verknüpften Daten anpassen wollten, eigene Funktionen bereitstellen. Access 2007 versucht, dies zu vereinfachen, indem es die Möglichkeit zum direkten Öffnen eines geeigneten Formulars bietet.

    Alles, was Sie dazu veranlassen müssen, ist das Erstellen eines geeigneten Formulars (am besten mit dem Wert Wahr für die Eigenschaft Popup, damit dieses Formular vor dem Weiterarbeiten mit anderen Formularen wieder geschlossen werden muss), hier auf Basis der Tabelle tblKunden sowie das Einstellen zweier Eigenschaften:

    Die Eigenschaft Wertlistenbearbeitung zulassen erhält den Wert Ja und die Eigenschaft Bearbeitungsformular für Listenelemente den Namen des dafür vorgesehenen Formulars (hier: frmKunden). Wenn Sie das Nachschlagefeld nun in der Datenblattansicht öffnen, erscheint eine Schaltfläche wie in Abbildung 2.20, die per Mausklick das angegebene Formular öffnet. Diese Funktion ist natürlich auch in Formularen verfügbar.

    Für das schnelle Ändern der zugrunde liegenden Daten ist diese Funktion ausreichend, aber nicht für eine professionelle Anwendung: Das angezeigte Formular zeigt nämlich weder direkt den aktuell im Nachschlagefeld ausgewählten Datensatz an (außer, es ist zufällig gerade der erste Datensatz ausgewählt), noch aktualisiert es das ausgewählte Feld auf den zuletzt im Formular angezeigten Datensatz. Falls Sie mehr benötigen, sollten Sie also doch lieber manuell eine passende Funktion erstellen - und wie das funktioniert, erfahren Sie in Kapitel 4, Abschnitt 4.6, »Von Formular zu Formular«.

    Abbildung 2.20: Beim Öffnen eines Nachschlagefeldes erscheint ein Symbol zum Anzeigen eines Formulars zum Bearbeiten der zugrunde liegenden Daten

    Auswahl von per m:n-Beziehung verknüpfte Daten

    Die hier vorgestellte Vorgehensweise zum Vereinfachen der Auswahl der Daten verknüpfter Tabellen ist nicht neu. Anders verhält es sich mit der Tatsache, dass Sie hier eine Mehrfachauswahl vornehmen können, ohne eine Verknüpfungstabelle zu erstellen, wie es sonst bei der Umsetzung von m:n-Beziehungen erforderlich ist.

    Dazu stellen Sie einfach die Eigenschaft Mehrere Werte zulassen auf den Wert Ja ein. Access zeigt dann zusätzlich zu den Listeneinträgen jeweils ein Kontrollkästchen an, mit dem Sie die enthaltenen Einträge auswählen können. So brauchen Sie nun etwa für die Auswahl der Mitarbeiter eines Projekts theoretisch keine m:n-Beziehung mehr, wie folgendes Beispiel zeigt.

    Die Tabelle tblProjekte enthält dabei ein Feld namens MitarbeiterID, mit dem sich mehrere Mitarbeiter auswählen lassen. Dazu stellen Sie die Feldeigenschaften wie in Abbildung 2.21 ein. Der nicht komplett sichtbare Inhalt der Eigenschaft Datensatzherkunft sieht so aus:

    SELECT tblMitarbeiter.MitarbeiterID, [Nachname] & ", " & [Vorname] AS Mitarbeiter FROM tblMitarbeiter ORDER BY [Nachname] & ", " & [Vorname];

    Damit legen Sie fest, dass Nachname und Vorname als ein Feld in die Datensatzquelle aufgenommen werden.

    Abbildung 2.21: Einstellungen für ein Nachschlagefeld, mit dem Sie mehrere Datensätze gleichzeitig auswählen können

    In der Datenblattansicht ergibt sich dann das Bild aus Abbildung 2.22. Das Nachschlagefeld zeigt beim Aufklappen Kombinationsfelder an, mit denen Sie einen oder mehrere Datensätze auswählen können.

    Abbildung 2.22: Auswahl mehrerer Mitarbeiter zu einem Projekt

    Nach der Auswahl werden die angezeigten Werte (nicht die gebundenen) in einer semikola-separierten Liste angezeigt (siehe Abbildung 2.23).

    Natürlich gibt es einige Besonderheiten bei der Abfrage von Tabellen mit mehrwertigen Nachschlagefeldern. Mehr darüber erfahren Sie in Kapitel 3, Abschnitt 3.2, »Abfragen mit Anlagen und mehrwertigen Feldern«.

    Abbildung 2.23: Anzeige von mehrwertigen Feldern mit mehr als einem enthaltenen Datensatz

    Bearbeiten der Daten in mehrwertigen Feldern

    Die in einem solchen mehrwertigen Feld angezeigten Daten können Sie genau wie bei üblichen Nachschlagefeldern mit einem Formular bearbeiten, wenn Sie die Eigenschaft Wertlistenbearbeiten zulassen auf den Wert Ja einstellen und für die Eigenschaft Bearbeitungsformular für Listenelemente den Namen eines geeigneten Formulars angeben - alles Weitere wurde bereits weiter oben erläutert.

    Bei ungebundenen Datensatzherkünften, bei denen Sie die Eigenschaft Herkunftstyp auf Wertliste einstellen und unter Datensatzherkunft eine semikolonseparierte Liste der anzuzeigenden Daten anlegen, können Sie auch einen eingebauten Dialog zur Bearbeitung der Daten verwenden; mehr dazu im folgenden Abschnitt.

    Nächster Abschnitt:

    2.1.6 Nachschlagefelder mit Wertliste

    © 2006-2008 André Minhorst Alle Rechte vorbehalten.