Access - Daten aus 2 Tabellen verknüpfen mittels 3. Tabelle -> Formular erstellen

Panthalone

Benutzer
Beiträge
13
Hallo zusammen,
ich möchte mir eine DB zur Verwaltung meiner CD- und DVD bzw. Blu-ray Sammlung erstellen. Dazu habe ich mir 2 Tabellen erstellt:
1. TAB_Filme und
2. TAB_Darsteller

Nun möchte ich beide Tabellen in Beziehung setzen und dazu eine 3. Tabelle TAB_FilmDarsteller verwenden. Das hat wunderbar geklappt. Die 3. Tabelle beinhaltet als Fremdschlüssel, die beiden Primärschlüssel der TAB_Filme und TAB_Darsteller. Zur Datenverknüpfung verwende ich den Nachschlage-Assistent. Praktische Sache, denn innerhalb kurzer Zeit habe ich nun beide Tabellen auch mit den Daten verknüpft.

Aber jetzt kommt mein Problem. Ich möchte nun die Benutzung mittels eines Formulars "schöner" gestalten. Führend ist TAB_Filme. Ich lasse mir also von Access einfach ein Formular erstellen (siehe Screenshot). Aber ich kann das erstellte Formular nicht verändern. Irgendwie scheint es mit diesem + mit Pfeilspitzen zu tun zu haben. Alle Felder sind scheinbar gruppiert und man kann sie nur zusammen vergrößern, verschieben usw.

Kann man diese Gruppierung irgenwie abschalten? Ich habe nirgendwo etwas darüber gefunden. Weder auf YT noch bei MS.

Vielleicht kann mir jemand dabei helfen. Arbeite erst seit kurzem wieder mit Access. Vor ca. 20 Jahren hatte ich schon mal das Vergnügen :)

Ich danke Euch für Eure Hilfe!
lG
Panthalone
 

Anhänge

  • Access1.webp
    Access1.webp
    20 KB · Aufrufe: 6
Werbung:
Nachdem ich in einem anderen Thread gelesen habe, dass es mit dem Nachschlage-Assistenten öfter zu Problemen kommt, habe ich mir das ganze nochmal anders vorgenommen. Ich habe zunächst mit der Haupt-Tabelle TAB_Filme das Haupt-Formular FOR_Filme erstellt. Danach noch ein zweites Formular FOR_FilmeDarsteller für die 3. Tabelle TAB_FilmeDarsteller. Beim Einziehen der FOR_FilmeDarsteller (Unterformular) in mein Hauptformular FOR_Filme wurde die Verknüpfung gleich vorgenommen. Und jetzt kann ich mein gesamtes Formular händisch "verschönern".
Fazit: Ich werde den Nachschlage-Assistenten erst einmal nicht mehr benutzen. Ist zwar schön, aber wenn es nicht zum gewünschten Ergebnis führt, dann ist er sinnlos.
Danke Euch!
 
Sollte noch dazu schreiben, dass die beiden Tabellen TAB_Filme und TAB_Darsteller eine 1:n Beziehung haben.
Anmerkung: Das passt nicht zu dem, was du in #1 geschilder hast. Demnach besteht eine n:m-Beziehung zwischen Filme und Darsteller, abgebildet durch FilmDarsteller. 1:n würde an dieser Stelle auch keinen Sinn ergeben, wenn die Sammlung nicht grade sehr klein ist :)
 
Das mit den Nachschlagefeldern hast Du richtig erkannt. Die sind Mumpiz, weil sie im Hintergrund nichts anderes machen als Abfragen zu generieren, die dann aber nicht anpassbar sind. Folge: das beschriebene Verhalten undefinirbarer Verknüpfungen, die dann einen Update der Daten verhindern. Wie Ukulele schon richtig schreibt, solltest Du das Datenmodell nochmal überdenken. M:n-Beziehung ist das Stichwort. Deine zwei Tabellen mit jeweils dem Primäschlüssel, aber nicht über Fremdschlüssel miteinander verbunden. Sondern eine dritte Tabelle, die nur die Kombinationen der Primärschlüssel enthält. Diese dann nach links und rechts mit 1:n verbinden. Darauf lässt sich dann wunderschön eine Abfrage generieren, die alle Kombinationen von Darstellern und Filme mit ihren Daten enthält. Diese Abfrage dann als Grundlage für deine Formular, fertig.
 
Anmerkung: Das passt nicht zu dem, was du in #1 geschilder hast. Demnach besteht eine n:m-Beziehung zwischen Filme und Darsteller, abgebildet durch FilmDarsteller. 1:n würde an dieser Stelle auch keinen Sinn ergeben, wenn die Sammlung nicht grade sehr klein ist :)
Hallo ukulele,
ja Du hast Recht! Die beiden Tabellen sind in einer n:m Beziehung. Ich war am Feiertag ziemlich frustriert, weil ich das nicht hinbekomme. Tut mir leid!
 
Habe meine DB inzwischen überarbeitet und sie sieht jetzt wie im Screenshot aus. Der nächste Schritt sind 2 Formulare inkl. Unterformularen:
1. Formular - führend Filme mit Unterformular die zugehörigen Darsteller
2. Formular - führend Darsteller mit Unterformular der zugehörenden Filme
Das 1. funzt schon. nur im 2. Formular zeigt sich das Unterformular der Filme noch nicht in der Datenblatt-Ansicht. Da hab ich wohl was beim basteln verwurschtelt :)
 

Anhänge

  • Beziehungen.gif
    Beziehungen.gif
    7,8 KB · Aufrufe: 2
Das mit den Nachschlagefeldern hast Du richtig erkannt. Die sind Mumpiz, weil sie im Hintergrund nichts anderes machen als Abfragen zu generieren, die dann aber nicht anpassbar sind. Folge: das beschriebene Verhalten undefinirbarer Verknüpfungen, die dann einen Update der Daten verhindern. Wie Ukulele schon richtig schreibt, solltest Du das Datenmodell nochmal überdenken. M:n-Beziehung ist das Stichwort. Deine zwei Tabellen mit jeweils dem Primäschlüssel, aber nicht über Fremdschlüssel miteinander verbunden. Sondern eine dritte Tabelle, die nur die Kombinationen der Primärschlüssel enthält. Diese dann nach links und rechts mit 1:n verbinden. Darauf lässt sich dann wunderschön eine Abfrage generieren, die alle Kombinationen von Darstellern und Filme mit ihren Daten enthält. Diese Abfrage dann als Grundlage für deine Formular, fertig.
Hallo andyfau,
ich bin ziemlich am kämpfen, gebe ich zu. Danke für Deine Tipps. Habe schon ziemlich viel Zeit verbraten für meine kleine DB bisher. Aber mit Deinem und dem Tipp von @ukulele bin ich weiter gekommen!
Danke Euch beiden!
 
Hallo,
zwei organisatorische Fragen:
1. ich möchte meinen Thread als "gelöst" oder "beantwortet" kennzeichnen. Ist das irgendwie möglich? Und
2. gibt es hier eine Ecke, wo man kleinere Tipps einstellen kann, die vielleicht anderen Usern nützlich sein könnten? Also z.B. hatte ich verhältnismäßig lange gesucht bis ich gefunden habe, warum ein Unterformular nicht in der Datenblatt-Ansicht sondern als "Einzelnes Formular" angezeigt wird?
So etwas muss man zwar nur einmal herausfinden und weiß das in der Zukunft, aber ich hätte mir einen solchen Tipp gewünscht, weil ich somit schneller weiter machen hätte können.
Danke Euch
 
Also das Access ist schon ziemlich verkorkst. Eine n:m Beziehung abzubilden in 3 Tabellen funktioniert nur manchmal. Als ob man da so viel falsch machen könnte. Oder bin ich zu blöd um das hinzukriegen? Einmal hat es geklappt. Ein zweites Mal hat es wieder nicht geklappt. Und das mit den Fremdschlüsseln in der 3. Tabelle ohne Nachschlage-Assistent zu machen ist dann nur mit SQL möglich. Funktioniert aber auch nicht. Mann, echt, ich glaub ich wechsle wieder zu MySQL. Dachte Access wäre inzwischen komfortabler und einfacher zu bedienen. :-(
 
Zu deiner vorigen Frage: Einen Thread als erledigt zu kennzeichen, das habe ich auch noch nicht gefunden. Gibts auch wohl nicht. Könnte man mal an die Forenleitung, bzw. unter Allgemeine Hinweise posten. Aber ein schlichtes "Fertig, ich habs hinbekommen." reicht ja eigentlich auch. Kleine Tipps finden die Suchmaschinen auch, wenn sie in einem Thread mitbeschrieben werden. Dann hat man auch den Zusammenhang.
Das mit den Beziehungen ist eben etwas komplexer, als es zunächst den Anschein hat. Ich bin, abweichend von der Bezeichnung unter meinem Profilbild, die sich offensichtlicht auch nicht ändern lässt und von der Forumssoftware wohl einfach nach der Anzahl Beiträge gesetzt wird, kein SQL-Kenner. Kann man SQL, schreibt man das Statement und die Datenbank reagiert entsprechend. Bei Access ist man geneigt, mal eben ein paar Linien zwischen den Tabellen zu ziehen und dann erwartet man, das Access "mitdenkt". In gewisser Weise tut es das ja auch. Denn es generiert IMMER eine SQL-Anweisung, die man sich ja auch in der SQL-Ansicht ansehen kann. Aber, auch da muss man wissen, was man macht.
Das Zusammenspiel von Indexfeldern und den verschiedenen Arten von Beziehungen (1:n, m:n, left und right join, inner join, Primärindizes, zusammengesetzte Indizes, und, und.... )muss verstanden sein. Desweiteren ist es ein Unterschied, ob ich Tabellenbeziehungen in der DB festschreibe, welche bereits bei der Erfassung von Daten die Regeln definieren. Tabellenverknüpfungen, die in Abfragen erstellt werden sind was anderes. Sie können aber die Ursache dafür sein, dass keine Daten eingegeben werden können, weil sie im Widerspruch zu den Tabellenbeziehungen stehen. Meiner Ansicht nach sind komplexe Abfragen mit mehreren Tabellen oder gar eingebundenen Unterabfragen im Access-Abfrageeditor schneller und übersichtlicher zu erstellen, als wenn ich einen ellenlangen SQL-String, inklusiver der Syntax fehlerfrei schreiben muss.
 
Ach ja, und nochmal: Vergiss die Nachschlagefelder! Sie sind garantiert die Ursache Deiner Verwirrungen. Benutze stattdessen Kombinationsfelder in deinen Formularen.
 
Das seltsame ist, dass ich schon das 5. Mal ein neues Projekt angefangen habe. Immer aus dem selben Grund. Eine kleines Projekt mit 2 oder 3 Tabellen funktioniert. Die Beziehungen passen und die Formulare auch. Dann erweitere ich mein Datenmodell und muss an bestehenden Beziehungen etwas ändern und schon stimmt nichts mehr. Ich bin von Beruf Programmierer und habe auch Erfahrung im Datenmodellieren. Allerdings auf dem Mainframe. Aber ein solches Verhalten wie bei Access kenne ich von dort nicht.
Ich fange jetzt noch mal von vorne an. Versuche es mit den Kombinationsfeldern, aber dort brauche ich dann SQL. Aber selbst dort funktioniert es nicht immer gleichmäßig.
 
Ok, ich wollte Dir nicht zu nahe treten.... Aber dann lade doch mal eine kleine DB, wo das Problem besteht, hoch. Vielleicht ist es ja ein systematischer Denkfehler. Ich habe früher immer den Cobol-Punkt vergessen und war gerettet, als nach Cobol 74 dann Cobol 85 mit Block-IF und Select-Konstrukt kam.😉
 
Werbung:
Ok, ich wollte Dir nicht zu nahe treten.... Aber dann lade doch mal eine kleine DB, wo das Problem besteht, hoch. Vielleicht ist es ja ein systematischer Denkfehler. Ich habe früher immer den Cobol-Punkt vergessen und war gerettet, als nach Cobol 74 dann Cobol 85 mit Block-IF und Select-Konstrukt kam.😉
Kein Problem. Ist alles im grünen Bereich. Ist ja Hobby. Hehe, ja der Cobol-Punkt hat mich früher auch oft geärgert. (Glatte 6 bei meiner ersten Cobol-Klausur) 😂
 
Zurück
Oben