4 Stimmen

eine Many-to-many-Tabelle mit Zugriff auffüllen

Ich habe zwei Tabellen ( persons y projects ), die sich in einer Many-to-many-Tabelle befinden und somit durch eine dritte Tabelle miteinander verbunden sind persons_projects

In MS Access habe ich nun ein Formular erstellt, das Daten aus dem projects Tisch.

Was ich möchte, ist ein Unterformular, das alle persons - Datensätze, die an diesem Projekt teilnehmen. In diesem Unterformular sollte es auch möglich sein, Personen zu diesem Projekt hinzuzufügen (oder zu löschen) - eine Dropdown-Liste scheint hier die beste Wahl zu sein.

Wie kann ich das tun? Ich kann alle Teilnehmer anzeigen, aber ich kann sie nicht hinzufügen. Es scheint, als hätte ich wieder das Problem mit dem "Einfügen in die Ansicht", da ich persons y persons_projects um die richtigen Datensätze anzuzeigen. Da ich aber nur Zeilen in einer einzigen Tabelle ändere/hinzufüge ( persons_projects ) Ich weiß nicht, warum der Zugang wieder zickig ist.

1voto

Fionnuala Punkte 89346

Sie sollten keine Personen benötigen, sondern nur Personen_Projekte. Ich nehme an, dass persons_projects besteht aus:

person_id  -> FK  ) Combined as PK, perhaps, if not, an autonumber PK
project_id -> FK  )

und (empfohlen) einen Datumsstempel und ein Benutzerfeld.

Das Unterformular ist mit einem Link Child und Master Field of project_id eingerichtet, das automatisch von Access ausgefüllt wird, sowie mit einer Combobox ähnlich der:

Control Source: person_id
Row Source: SELECT person_id, surname & " " & forename, some_field FROM persons
Bound Column: 1
Column Count: 3 
Column Widths: 0cm;2cm;2cm 

Edit re Kommentare

Es ist möglich, wenn auch oft etwas schwieriger, beide Tabellen einzubeziehen und einen aktualisierbaren Datensatz zu haben, die Abfrage (View) sollte sowohl project_id als auch person_id aus der Kreuzungstabelle enthalten.

0voto

JeffO Punkte 7827

Es scheint, als ob Personen hier die treibende Kraft sind, da Sie in der Lage sein wollen, sie mit mehreren Projekten zu verknüpfen und den Personendatensatz zu löschen.

Legen Sie Ihrem Formular die Personentabelle zugrunde. Ein Unterformular sollte auf der Tabelle person_projects basieren und mit den entsprechenden IDs verknüpft sein. Sie können ein Kombinationsfeld für die Projekt-ID im Unterformular verwenden und ein anderes Feld anzeigen lassen, damit der Benutzer das Projekt identifizieren kann (Name?). Vielleicht möchten Sie alle Projektdaten für jedes Projekt in diesem Formular anzeigen, aber das könnte für den Benutzer sehr verwirrend sein. Ein separates Formular, das Sie "aufklappen" können, um weitere Projektinformationen anzuzeigen, ist vielleicht die bessere Wahl.

Wenn Sie eine Person löschen wollen, können Sie sie einfach aus der Tabelle persons löschen, aber Sie müssen entscheiden, ob Sie verwaiste Datensätze in der Tabelle person_projects haben wollen (was Sie nicht tun sollten). In Access ist es einfach, eine Verknüpfung mit referenzieller Integrität herzustellen (kaskadierendes Aktualisieren und Löschen optional). Es liegt an Ihnen, wie stabil dies sein soll.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X