Neuigkeiten:

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

Mobiles Hauptmenü

Nachschlageassistent bzw. Tabellenverknüpfung über mehrere Tabellen

Begonnen von ChemSim, Februar 10, 2024, 01:14:36

⏪ vorheriges - nächstes ⏩

ChemSim

Hallo zusammen,

ich habe eine Frage zu Microsoft Access. Aktuell bin ich gerade dabei, mir eine Datenbank aufzubauen. Dazu gibt es bisher die folgenden drei Tabellen:

tblProdukte
tblProduktgruppen
tblProduktklassen


Man kann es wie ein Baumdiagramm betrachten, in dem ganz oben die Produktklassen stehen, dann kommen die Produktgruppen und schließlich die Produkte selbst.

In der Tabelle tblProduktklassen gibt es zwei Spalten, die erste ist eine ID-Spalte (Primärschlüssel), die zweite gibt einfach die Bezeichnung der Produktklasse an und heißt "Produktklasse"

In der Tabelle tblProduktgruppen gibt es drei Spalten (1. Spalte: "ID", 2. Spalte: "Produktgruppe", 3. Spalte: "Produktklasse"). In dieser Tabelle habe ich über den Nachfrage-Assistenten eine Beziehung zur Tabelle tblProduktklassen, und zwar in der 3. Spalte mit der Bezeichnung "Produktklasse", sodass ich zu jeder Produktgruppe die entsprechende Produktklasse auswählen kann (per Auswahlmenü bzw. Kombinationsfeld).

Soweit funktioniert auch alles gut. Nun ist es aber so, dass jede Produktgruppe immer eindeutig einer Produktklasse zugeordnet ist (eine Produktklasse kann hingegen vielen Produktgruppen zugeordnet werden)

In der Tabelle tblProdukte habe ich jetzt vier Spalten (1. Spalte: "ID", 2. Spalte: "Produktname", 3. Spalte: "Produktgruppe", 4. Spalte: "Produktklasse")

Wie kann ich es nun schaffen, dass in der Tabelle tblProdukte bei Auswahl der Produktgruppe auch gleich in der 4. Spalte die in tblProduktgruppen zugeordnete Produktklasse angezeigt wird, d. h. eine Produktgruppe fest mit einer Produktklasse "verschmolzen" ist.

Würde mich über Eure Hilfe sehr freuen!

Viele Grüße
ChemSim


MzKlMu

Hallo,
vergiss den Nachschlageassi, der ist in Tabellen tabu. Solche Abhängikeiten und Auswahlen werden ausschließlich in Formularen als Kombifelder angelegt.
Über Nachschlagefelder werden auch keine Beziehungen angelegt. Beziehungen werden im Beziehungsfenster (und nur dort) angelegt.

Zeige also bitte mal ein Bild des Beziehungsfensters.

Die  4. Spalte: "Produktklasse" ist überflüssig. Die Klasse ergibt sich automatisch und kann über eine Abfrage auch angezeigt werden.

Hier mal ein Tutorial:

https://www.access-tutorial.de/

Und hier noch was zum Nachschlageassi:

https://www.ms-office-forum.net/forum/showpost.php?p=2081877&postcount=2
Gruß Klaus

ChemSim

Hallo MzKlMu,

danke für Deine Antwort. Ich habe die Methode mit dem Nachschlageassistenten von diversen YouTube-Tutorials, deswegen habe ich ihn benutzt. Ich habe nun die 4. Spalte "Produktklasse" in der Tabelle tblProdukte wieder entfernt. Anbei ein Bild des Feldes "Beziehungen".
Sie dürfen in diesem Board keine Dateianhänge sehen.
Viele Grüße
ChemSim

MzKlMu

Gruß Klaus

ChemSim

Das war ja mein Problem. Ich hatte die Beziehung ursprünglich über den Nachschlageassistenten gesetzt, wie übrigens auch die Beziehung zwischen den Tabellen tblProduktklassen und tblProduktgruppen, aber ich habe diese jetzt gelöscht, weil es ja nicht so funktioniert hat wie ich will und ich gelernt habe, dass es anscheinend falsch ist, den Assistenten zu nutzen!

Wie bekomme ich nun die Verknüpfung so hin, wie ich es mir vorgestellt habe?

MzKlMu

Hallo,
Beziehungen werden im Beziehungsfenster angelegt.
Zie dort einfach eine Beziehungslinie von der ID der Produktgruppen zur ProduktgruppenID der tblProdukte. Siehe Bild:



Nenne ID Felder nicht einfach ID sondern mit Bezug zur Tabelle.
ProduktgruppenID
ProduktKlassenID
ProduktID.

Für den Anfänger ist es vorteilhaft an die Fremdschlüsselfelder (n-Seite) ein _F anzuhängen. Damit man Primär- und Fremdschlüssel schon am Namen unterscheiden kann.
Gruß Klaus

ChemSim

Hallo,

ich habe nun die IDs in den Tabellen jeweils umbenannt und dann von der ProduktgruppeID der Tabelle tblProduktgruppen eine Linie zur ProduktgruppenID der tblProdukte gezogen. Ist es so richtig?

MzKlMu

Hallo
und noch RI einstellen, dann stimmt es.
Und das _F nicht vergessen.
Gruß Klaus

ChemSim

Hallo,

ich habe die _F noch ergänzt, hoffe war so richtig gemeint. Allerdings kann ich die referenzielle Integrität nicht einstellen, da ich einen Fehler bekomme.

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

MzKlMu

Hallo,
die Fehlermeldung ist doch eindeutig. Einfach die Datentypen prüfen, muß auf beiden Seiten Longinteger sein.
Gruß Klaus

ChemSim

Vielen Dank, ich habe es geändert und nun funktioniert es!

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

Mein Ziel ist es nun, über ein Formular, und wie Du bereits gesagt hast über ein Kombinationsfeld, einen Eintrag und die Tabelle tblProdukte zu ermöglichen. Hierbei soll man das Produkt eingeben können und aus einer Liste die Produktgruppen auswählen können. Letztere sind jetzt bereits über die andere Tabelle mit den Produktklassen verbunden.

Dazu habe ich zunächst ein neues Formular mit dem Namem fmrNeuesProdukt erstellt und dieses mit der Tabelle tblProdukte als Datensatzquelle verknüpft. Anschließend habe ich ein neues Textfeld erstellt, in das ich den Produktnamen eingeben kann. Dann habe ich ein Kombinationsfeld erstellt und als Datenherkunft die tblProduktgruppen angegeben. Soweit funktioniert auch alles, allerdings habe ich gerade noch einen Button erstellt, welcher mit den eingebenen Eintrag abspeichert. Das Problem ist, dass die Einträge nicht in der Tabelle tblProdukte erscheinen.

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

Was habe ich falsch gemacht?

MzKlMu

Hallo,
bei Acces braucht es keinen Speichernbutton. Access speichert mit gebundenen Formularen automatisch, sobald der Datensatz gewechselt (zu einem neuen DS z.B.) oder das Formular verlassen wird.

Schließe mal einfach das Formular wenn Du ein Produkt mit Gruppe eingegeben hast und schaue dann mal in der Tabelle nach.

Was macht denn der von Dir erstelle Speichern Button genau ?
Gruß Klaus

ChemSim

Ich habe dem Formular einen Speicher-Button hinzugefügt und mit einem VBA-Code verknüpft, sodass die Eingabefelder automatisch geleert werden und für einen neuen Eintrag bereitstehen. Das hat tatsächlich so funktioniert wie ich wollte und ich kann nun neue Produkte in die Tabelle aufnehmen. In der Tabelle tblProdukte in der Spalte Produktgruppe steht jetzt eine Zahl, die genau der ID der Tabelle tblProduktgruppen zugeordnet ist. Von daher hat auch die Verknüpfung wie es scheint geklappt.

Jetzt bin ich gerade am rätseln, wie ich es am besten hinbekomme, die hinzugefügten Produkte wieder über ein Formular bearbeitbar zu machen, falls man sich mal vertippt oder so. Wenn ich einfach ein neues Formular erstelle und die beiden Felder "Produktname" und "Produktgruppe" nutze, habe ich das Problem, dass bei Produktgruppe nur Zahlen stehen, also die ID. Kann man das irgendwie Umstellen, dass ich dort auch eine Art Kombinationsfeld habe, aus dem ich die Produktgruppen auswählen kann?

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

PS: Wenn ich einfach ein Produkt in das Textfeld eingebe und eine Gruppe auswähle, dann das Formular schließe, wird es NICHT in die Tabelle eingetragen, nur wenn ich den Speichern Button nutze!

MzKlMu

Hallo,
Du brauchst kein extra Formular, du kannst das bisher erstellte Formular auch zum ändern nutzen.
Gruß Klaus

ChemSim

Zitat von: MzKlMu am Februar 10, 2024, 18:08:16Du brauchst kein extra Formular, du kannst das bisher erstellte Formular auch zum ändern nutzen.

Ja, aber dann müsste ich mein Textfeld und das Kombinationsfeld wieder entfernen und die vorhandenen Felder der Tabelle hinzufügen, wodurch ich das Problem habe, dass die bereits bestehenden Produkte auch angezeigt werden. Ich möchte die Eingabe eines neues Produktes aber davon trennen.

Weißt du, wie ich in dem zweiten Formular fmrProduktBearbeiten einstellen kann, dass bei Produktgruppe nicht 1, 2, 3 usw. sondern die entsprechend verknüpften Produktgruppen stehen, die man auswählen kann?