Neuigkeiten:

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

Mobiles Hauptmenü

Alle Spalten einer Kreuztabelle anzeigen

Begonnen von Nichtundumm, Juni 23, 2025, 10:42:42

⏪ vorheriges - nächstes ⏩

Nichtundumm

Moin!

Ich habe zwei Tabellen (1. Mitarbeiter / 2. Lehrgänge), deren Beziehungen (Teilnahme) in einer 3. Tabelle erfasst sind.
Nun möchte ich eine Übersicht welche Lehrgänge (Spalte) von welchen Mitarbeitern (Zeile) besucht werden.

Problem hierbei: wurde ein Lehrgang von noch keinem Mitarbeiter besucht (sprich gibt es in der 3. Tabelle keinen einzigen Datensatz/Wert) wird die entsprechende Spalte also der Lehrgang nicht angezeigt.
Ich möchte aber alle Lehrgänge darstellen, um zu sehen welche Auswahl es gibt.

Ein erster Versuch bei den Eigenschaften der Verknüpfungen (3. Tabelle - Lehrgang; alle Datensätze aus ,,Lehrgang" anzeigen) klappte nicht, da es ja noch die Verknüpfung ,,Mitarbeiter - 3. Tabelle" gibt.

Ich bin kein ITler und kann nicht programmieren. Bitte habt Nachsicht.

Mfg

Thomas D.

MzKlMu

Hallo,
den ersten Versuch solltest Du weiter verwenden, nur so geht es.
Left/Right Join muss auf die Beziehung Lehrgang - Mitarbeiter angewendet werden.

Da musst Du halt etwas probieren.

Zeige mal ein Bild des Beziehungsfensters.
Gruß Klaus

andyfau

Hallo Thomas,
wenn Du in einer Abfrage zwei Tabellen verknüpfst, kannst Du über den Verknüpfungstyp steuern, dass, z.B. alle Datensätze der linken Tabelle angezeigt werden, auch wenn in der rechten Tabelle ein korrospondierender Satz fehlt. Zu den Verknüpfungseigenschaften gelangst Du, indem Du mit der rechten Maustaste auf die Verbindungslinie klickst. So kannst Du Dir zuerst eine Abfrage (noch keine Kreuztabellenabfrage) bauen, in der alle Daten(sätze) enthalten sind, die Grundlage für die Kreutztabelle sein sollen. Auf diese Abfrage setzt Du dann dein Kreuztabellenabfrage auf.
Beste Grüße
Andreas

Nichtundumm

#3

Vielen Dank für die fixe Antwort. Bei zwei verknüpften Tabellen wäre es nicht das Problem. Ich habe allerdings drei verknüpfte. Ich versuche morgen mal ein Bild der Verknüpfungen einzustellen. (Ist alles auf dem Arbeitsrechner)

Nichtundumm

#4
Zitat von: MzKlMu am Juni 23, 2025, 11:16:32den ersten Versuch solltest Du weiter verwenden, ......
Danke für die fixe Meldung.
Ich mache gleich morgen ein Bild. (Ist alles auf dem Arbeitsrechner)

Nichtundumm

Hier das Bild der Beziehungen.Sie dürfen in diesem Board keine Dateianhänge sehen.

Knobbi38

#6
Kurze Rückfrage:

Möchtest du alle Lehrgänge und die entsprechenden MAs dazu anzeigen oder von den MA ausgehend, alle MAs und deren jeweils besuchte Lehrgänge anzeigen?

Was ist das für eine Beziehung in VD-Vollzug rechts von ID?

Dann solltest du mal ganz schnell über übliche Namenskonventionen nachdenken bzw. nachlesen. Die Tabellennamen sind anzupassen und die Felder mit Fremdschlüssen sind entsprechend zu kennzeichnen, z.B. F_Lehrgang_ID oder F_MA_ID. Manche stellen das F auch hinten dran, daß wäre jetzt egal, Hauptsache man kann Fremdschlüsselfelder erkennen. Verwende außerdem keine Sonder- und Leerzeichen in Feldnamen, ausgenommen den Unterstrich.

"Name" als Feldbezeichner ist auch nicht glücklich, weil eine VBA Anweisung bereits so benannt ist. Besser wäre eine "sprechende" Bezeichnung, wie z.B. "Nachname", damit ist dann alles klar.

Gruß Knobbi38



MzKlMu

#7
Hallo,
zusätzlich zu den Hinweisen von Ullrich.
Warum ist keine referentielle Integrität eingestellt?
Das gehört unbedingt dazu, erst dann sind es Beziehungen.
Die ID Felder (PS) sollte man auch vernünftig benennen, z.B. LehrgangID

Gibt es für Themen und Zielgruppe keine Tabellen ?
Das Lernziel könnte auch ein Kandidat für eine Tabelle sein.

Die Tabelle der Mitarbeiter "VD Vollzug" zu nennen erscheint mir auch etwas rätselhaft.

Ein Bild der Beziehungen sollte alle Tabellen zeigen. Im konkreten Fall könnte es nämlich genau auf die nicht gezeigte Tabelle anzukommen. Wie auch von Ulrich angemerkt.
Gruß Klaus

Nichtundumm

#8
Zum besseren Verständnis was ich möchte und was ich bereits darstelle:
Die linke Tabelle beinhaltet alle Lehrgänge die es gibt mit den entsprechenden Eckdaten zu jedem Lehrgang, wie bspw einer bestimmten Kategorie.

Die rechte Tabelle beinhaltet alle Mitarbeiter mit entsprechenden Eigenschaften wie Alter, Wohnort etc.

In der mittleren Tabelle ordne ich jeden Mitarbeiter den Lehrgang zu, den er besucht hat.

Das klappt insgesamt sehr gut.

Nun möchte ich folgendes darstellen:
Alle Lehrgänge einer Kategorie als Spaltenbezeichnung und alle Mitarbeiter als Zeilenbezeichnung.

Mein Problem:
Wenn auch nur ein Mitarbeiter einen Lehrgang belegt hat, erscheint die entsprechende Spalte.
Hat noch kein Mitarbeiter den Lehrgang belegt ist die Spalte nicht da.
Umgekehrt verhält es sich ebenso mit den Mitarbeitern. Wenn jemand noch keinen Lehrgang belegt hat, erscheint die Spalte nicht.
Mein Ziel: Alle Mitarbeiter und alle Lehrgänge werden angezeigt.


Nichtundumm

#9
Zitat von: MzKlMu am Juni 25, 2025, 14:28:09Warum ist keine referentielle Integrität eingestellt?
.....

Referenzierte Integrität muss ich erstmal googeln.
Was die Themen und Zielgruppen angeht so sind die wahrscheinlich nicht für eine extra Tabelle geeignet, da es da leider keine standardisierten Bezeichnungen bei uns gibt. Sprich bei nahezu jedem Lehrgang ist es anders formuliert. Da müsste ich dann selbst Gruppen bilden, die dann allerdings nicht den offiziellen Bezeichnungen entsprächen.
Bei den Lernzielen ist es genauso.

Ich gebe zu, ich hatte seinerzeit einfach angefangen und dann wurde die Datenbank, zumindest für mich, immer komplexer. Deshalb gibt es nur sehr wenige Tabellen und die Bezeichnungen entsprechen nicht den Standards.

Ich habe mich auch immer gefragt, wann ergibt es wirklich Sinn, eine neue Tabelle zu machen und was für einen Vorteil bringt es mir.

Ich danke schon mal für eure Geduld und Nachsicht.

MzKlMu

Hallo,
bitte das komplette Beziehungsbild zeigen, es könnte an der Tabelle liegen die man nicht sieht.

PS
Bitte keine ganzen Beiträge zitieren.
Gruß Klaus

Nichtundumm

Das ist ein Bild der Back-End-Datei, wobei ich die Spind-Datei gar nicht nutze, da die Verantwortlichen doch lieber eine extra Excel-Liste nutzen.

Mehr Tabellen gibt es nicht.

Knobbi38

#12
Hallo Thomas,

hier ein kleines rudimentäres Beispiel, wie man so etwas machen könnte. Leider akzeptiert Jet-SQL keinen Sub-Select, so daß man die stattdessen Dlookup() verwenden muß. Zum Einstieg mit der Kreuztabelle hier nur mit den IDs.

Auch wenn du kein Programmiere bist, solltest du dich mit den Grundlagen von Datenbanken beschäftigen, denn Access ist nur ein Tool, womit du eine Datenbankanwendung entwickeln kannst im Gegensatz zu Excel, wo man auch mal auf die Schnelle ein paar Daten zusammen schieben kann.

Als Einstieg empfehle ich immer ein passenden Fachbuch, weil anders als bei Videos und Tutorials der Leser i.d.R. didaktisch an das Thema herangeführt wird. 

Neben vielen anderen z.B. dieses hier:
https://www.andreasstern.de/buch/index.php

Gruß Knobbi38

Beaker s.a.

ZitatReferenzierte Integrität muss ich erstmal googeln.
Was ist denn daraus geworden? Im letzten Bild sieht man davon nichts.
Das kannst du nicht vor dir herschieben, das ist Basiswissen für Db-
Entwicklung.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Nichtundumm

Zitat von: Beaker s.a. am Juni 28, 2025, 12:10:15
ZitatReferenzierte Integrität muss ich erstmal googeln.
Was ist denn daraus geworden? Im letzten Bild sieht man davon nichts.

Ich vermute, dass mir da der intellektuelle Zugang fehlt. Ich habe es so verstanden, dass es letztlich um die eindeutige Zuordnung von Datensätzen geht. Eigentlich dachte ich, dass ich dies getan hätte, was aber offensichtlich nicht der Fall ist.

Wenn ich die Zeit hätte, würde ich mich gern mehr damit befassen. Warum ich mich trotz meines sehr rudimentären Könnens trotzdem rangetraut habe? Weil die bestehenden Lösungen bei uns einfach mega schlecht und frustrierend sind und es kein anderer macht.