Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

m:n Beziehung

Begonnen von KaffeeBereiter, Januar 21, 2025, 10:08:57

⏪ vorheriges - nächstes ⏩

KaffeeBereiter

Hallo zusammen,

in Access bin ich noch ein kompletter Anfänger, habe mir zu dem Thema in der vergangenen Woche versucht über Google und YouTube was beizubringen, doch der Feinschliff in meiner Datenbank fehlt mir noch. Die m:n Beziehung und wie ich das in einem Formular ausgebe. Leider sind Forenbeiträge oft mit Abkürzungen und Fachbegriffen übersäht, dass ich erst einmal die Googeln muss ums zu verstehen. Wo bei der Suche der Fachbegriffe ich auf andere stoße, das ist ein Teufelskreis.  :'(

Sie dürfen in diesem Board keine Dateianhänge sehen.
Jetzt aber mal zu dem was ich machen möchte:
Ich möchte eine Datenbank erstellen in der ich jedem Mitarbeiter zuordnen kann wann er/sie welche Unterweisung erhalten hat. Doch scheitert es bei mir an den Beziehungen (glaube ich jedenfalls).
Was ich bereits habe:
  • Tabelle mit Mitarbeiterinformationen [MID, Nachname, Vorname, etc.]
  • Tabelle mit Unterweisungsbezeichnungen [UID, Bezeichnung]
  • Tabelle zum Zusammenführen [MID, UID, Datum, Anhang, etc.]
(das mit den Umlauten muss ich noch korrigieren)

Bislang habe ich versucht:
Den Datensatz Mitarbeiter.MID als Primärschlüssel mit dem Datensatz Zusammenführung.MID und entsprechend den Datensatz Unterweisung.UID als Primärschlüssel mit dem Datensatz Zusammenführung.UID in Beziehung zu setzen.
Ebenfalls habe ich versucht die Datensätze Zusammenführung.MID und Zusammenführung.UID zusätzlich als Primärschlüssel zu setzen, was aber auch nicht geholfen hat.

Meine Probleme:
  • Wenn ich im Formular nun einem Mitarbeiter eine Unterweisung zuordne, wird in der Tabelle Unterweisungen und in der Tabelle Mitarbeiter ein neuer Datensatz erzeugt. Ich möchte aber die dort Voreingestellten lediglich als Auswahlmöglichkeit haben. Ich möchte nicht 20 Mal "Betriebsanweisung 01" bzw. 20 Mal Herrn "Müller" drin stehen haben.
  • Im Formular: Das Kombinationsfeld oben in dem man den Nachnamen eines Mitarbeiters heraussuchen kann um schneller Navigieren zu können stimmt nicht mit dem Nachnamen ein paar Felder weiter unten überein.


Über Hilfe würde ich mich sehr freuen.
Grüße
Lucas

MzKlMu

Hallo,
da gibt es jede Menge Fehler.
- Grundsätzlich ist referentielle Integrität in den Beziehungen einzustellen
- Du verwendest MID in der Zusammenführung die es gar nicht gibt
- ebenso bei der UID
- Verknüpfung von Hafo und Ufo erfolgt über die Schlüsselfelder, nicht über den Nachnamen. Beim 2.Müller hättest Du ein Problem.
- Das Kombi im Ufo braucht 2 Spalten und hat als Steuerelementinhat natürlich die UID_F
- Die Spalte 1 mit der UID_F wird mit 0cm ausgeblendet, dadurch wird die Bezeichnung der Unterw. angezeigt.
- Der Bericht mit den Formularen ist Unsinn, ein Bericht ist ein eigenständiges Objekt, das mit Formularen nichts zu hat. Auch ein Bericht muss wie ein Formular entworfen und gestaltet werden, vollkommen unabhängig von Formularen.

Anbei die geänderte Version.
Bitte alles verstehen und bei Bedarf nachfragen.
Gruß Klaus

KaffeeBereiter

Vielen Dank erstmal für die schnelle Antwort.

  • das mit der referenziellen Integrität habe ich auch versucht einzustellen, doch kam dann jedes mal eine Fehlermeldung bei mir: "MS Access kann diese Beziehung nicht herstellen, wenn referenzielle Integrität erzwungen wird. In der Tabelle Zusammenführung gibt es Daten, die gegen die Regeln für referenzielle Integrität verstoßen." Dabei sind bei mir doch MID und UID als Autowerte in den jeweiligen Tabellen bzw. Zahlen in der Zusammenführenden Tabelle eingestellt :/
  • Die MIDs/UIDs in der Tabelle Zusammenführung wurden automatisch erstellt durch meine Tests. Also durch das zuweisen einer Unterweisungsbezeichnung wurden Anscheind auch MIDs/UIDs erstellt
  • Mit Hafo und Ufo sind Haupt- und Unterformular gemeint, oder? Bin in das Formular "UnterweisungJeMitarbeiter" gegangen und hab dort das Unterformular angeklickt um die Eigenschaften zu öffnen. Das Ergibt Sinn da nach den Schlüsselfeldern und nicht nach den Nachnamen zu gehen. Das konnte ich zuvor nicht machen, da in meiner Abfrage nicht die MID/UID enthalten war ^^
  • Mit zwei Spalten meinst du die Abfrage hinter der Eigenschaft "Datensatzherkunft"?
  • Wo ich da jetzt eine länge (o cm) eingeben kann ist mir auch ein Rätsel.
  • Was ich mit Berichten anfagen soll ist mir generll noch nicht eingeleuchtet. Vielleicht kommt da ein Verwendungszweck ja noch irgendwann für mich hinzu.

Soweit ich konnte habe ich die Änderungen versucht umzusetzen. Jetzt haben einige Felder in meinem Formular eine grüne Ecke oben links und ich kann keine Unterweisungsbezeichnungen mehr auswählen  :-\

MzKlMu

Hallo,
ZitatMit Hafo und Ufo sind Haupt- und Unterformular gemeint, oder?
Ja, so ist es.
ZitatMit zwei Spalten meinst du die Abfrage hinter der Eigenschaft "Datensatzherkunft"?
Nein, 2 Spalten sind die Eigenschft des Kombifeldes zur Auswahl der Unterweisung im Ufo. Und dort gibt es auch die Eigenschaft "Spaltenbreiten". Dort steht dann 0cm;5cm
Berichte werden zum Drucken verwendet.
Lade die DB erneut hoch. Aber mit neuer Versionsnummer (v7).
Gruß Klaus

KaffeeBereiter

Sorry, konnte Gestern nicht mehr Antworten.
Das mit den zwei Spalten habe ich jetzt Gefunden und die Spaltenbreite eingestellt :)
Leider sind immer noch die grünen Ecken da und ich kann nichts auswählen :/
Hier die Datenbank noch mal: Sie dürfen in diesem Board keine Dateianhänge sehen.

MzKlMu

Hallo,
Du hast da jede Menge grober Fehler.

- Das Hafo braucht die Mitarbeitertabelle als Datenquelle
- Das Ufo muss die Zusammenführungstabelle als Datenquelle haben.
- Du hast die Schlüsselfelder verwechselt. Um das zu erkennen, hänge ich an die Fremdschlüsselfelder ein _F an. Hast Du nicht gemacht
- Das Kombi zur Auswahl der Unterweisung hat die falsche Spaltenreihenfolge
- Der Bericht ist so unbrauchbar, den habe ich gelöscht.

Das sind alles Fehler, die Du bei sorfältigem Verleich mit meiner DB in #1 hättest erkennen müss

Hier noch ein Link für ein Tutorial.

https://www.access-tutorial.de/
Gruß Klaus

KaffeeBereiter

Komisch, nachdem ich die ersten zwei Punkte von deiner Liste abgearbeitet habe (Hafo mit Herkunftsobjekt tblMitarbeiter und Ufo mit Datensatzquelle tblZusammenführung), werden mir im Hauptformular die Datensätze der Mitarbeiter angezeigt und nicht mehr die Unterweisungsbezeichnungen
Links Meine - Rechts Deine
Sie dürfen in diesem Board keine Dateianhänge sehen.
Die Schlüsselfelder UID und MID habe ich in der Tabelle Zusammenführung jetzt mit einem "_F" erweitert. Aber wo ich die verwechselt haben soll weiß ich nicht. In der Abfrage, dem Ufo und dem Hafo sind die alle gleich wie in deiner Version.

MzKlMu

#7
Hallo,
Zitatwerden mir im Hauptformular die Datensätze der Mitarbeiter angezeigt und nicht mehr die Unterweisungsbezeichnungen
Das ist ja auch richtig so, im Hafo haben die Unterweisungsbezeichnungen nichts zu suchen. Alles was mit Unterweisung zu tun hat, kommt nur in das Ufo. Und in das Ufo kommen keine Daten der mitarbeiter.

Daten der Mitarbeiter. Ich kann im Moment nicht nachvollziehen was Du da machst, Du musst doch nur Abkucken, meine Version funktioniert ja.
ZitatHafo mit Herkunftsobjekt tblMitarbeiter und Ufo mit Datensatzquelle tblZusammenführung),
Das ist richtig, hast Du aber nicht gemacht, sonst wäre in Deiner Version (linkes Bild) keine Mitarbeiterdaten im Ufo.

ZitatAber wo ich die verwechselt haben soll weiß ich
Bei verknüpfen von/nach hast Du die verwechelt.Außerdem auch die Spaltenreihenfolge vertauscht.

Lade die DB noch mal hoch.
Gruß Klaus

KaffeeBereiter

Hier die DB Sie dürfen in diesem Board keine Dateianhänge sehen.

Nach einigem Suchen hab ich jetzt auch die Verknüpfung "Von/Nach" im Eigenschaftenfeld des Hafo gefunden. Jedoch kann ich da nicht auswählen was du in deiner Version ausgewählt hast.
Bei dir steht drin: "'tblZusammenführung' für jeden Datensatz in 'abfUnterweisung' mit 'MID_F' anzeigen"
Bei mir steht drin: "'tblMitarbeiter' für jeden Datensatz in 'abfUnterweisung' mit 'MID_F' anzeigen"

MzKlMu

#9
Hallo,
Du hast immer noch ganz grobe Fehler drin, die bei sorgfältigem Vergleich mit meinen Versionen auffallen müssten.
Die Datensatzquelle für das Hafo ist falsch, das muss wie bereits gesagt die Mitarbeitertabelle sein und nicht die Abfrage abfUnterweisung. Diese Abfrage kannst Du dann löschen wenn die Mitarbeitertabelle verwendet wird.

ZitatBei mir steht drin: "'tblMitarbeiter' für jeden Datensatz in 'abfUnterweisung' mit 'MID_F' anzeigen"
Kein Wunder, das Herkunftsobjekt des Ufos ist ja auch falsch, das muss das Formular abfUnterweisung-Unterformular sein, Du hast da die Tabelle direkt drin stehen.

Ich würde Dir dringend raten, Dir die Grundlagen zu erarbeiten, sonst wird das nichts. Hast Du Dir das Tutorial mal angesehen?

Angepasste DB anbei.

Nebenbei:
In der Entwicklungsphase einer DB ist regelmäßig das Access Tool "Komprimieren/reparieren" zu benutzen. Erst dann werden gelöschte Objekte und Daten wirklich aus der DB entfernt. Erst dann zippen und hier hochladen.

Du hast 240 KB hochgeladen, bei mir sind es gerade mal 38 KB.



Gruß Klaus