Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Beziehungen zwischen Tabellen

Begonnen von Mexx, Mai 12, 2020, 19:21:33

⏪ vorheriges - nächstes ⏩

Mexx

Hallo Leute,
ich bin neu in der Access Welt, ein bisschen was hab ich schon selbst geschafft aber nun wirds etwas kompliziert und ich bräuchte euere hilfe.
Mit VBA kenn ich micht null aus.

Ich weiß nicht ob es so eine Frage hier schonmal gegeben hat, aber da ich micht nicht wirklich mit Access auskenne weiß ich auch nicht nach welche Funktion ich suchen soll..

Ich beschreib euch jetzt einfach mal so gut es geht was ich vorhabe, dann könnt ihr mir bestimmt dabei helfen wie ich das am besten und einfachsten umsetzen kann.

Bespiel:
Ich habe ein Hotel und möchte die Zimmer einrichten. Dazu habe ich 10 Kästen, 10 Betten, 10 Tische, 20 Stühle, usw... jeder Kasten, jedes Bett usw. hat auch eine eigene Inventarnummer.
Dazu mach ich für die Kästen, Betten, ... je eine eigene Tabelle wo ich das Modell,Größe, Inventarnummer, Infos usw.. eintrage.
Jetzt mach ich mir eine eigene Tabelle die sich Zimmer nennt. Dort habe ich für jeden Gegenstand eine Spalte in der ich mittels Nachschlagefunktion auf die Inventar-Spalten in zb. der Betten Tabelle zugreifen kann, das funktioniert auch problemlos. Nun möchte ich aber wenn ich in der Tabelle Zimmer in der Spalte Betten das Bett mit der Inventarnummer 001 auswähle dass in der Tabelle Betten dann automatisch in der Spalte Zimmer die Zimmernummer steht oder ich auch gleich in der Tabelle Betten die Zimmernummer eingeben kann und die Inventarnummer steht gleich in der Zimmertablle beim richtigen Zimmer.
Es sollte dann auch einfach sein einem Gegenstand ein neues Zimmer zuzuweise.
tolle wäre es auch wenn ich jeden Gegenstand nur einem Zimmer zusteilen kann, aber das ist bestmmt noch kompliziertert als es eh schon ist.
Also im Grunde möchte ich eine Art Baukasten wo ich von mehreren Tabellen in einer Tabelle etwas zusamenstelle.

Es gibt auch verschiedene Modelle von Betten, die einen sind 140x200 und die anderen 180x200, und da möchte ich wenn ich in der Spalte Modell zb. Junior wähle dass in der Spalte Größe automatisch der Wert 140x200 eingetragen wird, usw..

Ich hoffe ich habs verständlich erklärt was ich tun möchte.
Das mit dem Hotel ist nur ein Beispiel weils mir am einfachsten erschienen ist.

Vielen Dank schonmal für eure Hilfe!!! :)

grüße Mexx

MzKlMu

#1
Hallo,
ZitatDort habe ich für jeden Gegenstand eine Spalte in der ich mittels Nachschlagefunktion auf die Inventar-Spalten in zb. der Betten Tabelle zugreifen kann, das funktioniert auch problemlos.
Das ist völlig falsch, auch wenn es funktioniert.
Du brauchst eine Zuordnungstabelle in der in einer Spalte der Gegenstand dem Zimmer zugeordnet wird. Das nennt sich n:m Beziehung mit 3 Tabellen.

Zitatin der ich mittels Nachschlagefunktion
Vergiss die Nachschlagefunktion. Die ist für Tabellen nicht sinnvoll. Nur in Formularen (als Kombinationsfelder) sollten diese verwendet werden. Und haben dort die gleiche Funktionalität.

ZitatDas mit dem Hotel ist nur ein Beispiel weils mir am einfachsten erschienen ist.
Aus Erfahrung halte ich gar nix von fiktiven Beispielen, denn meistens macht man einen Vorschlag und dann heißt ja, aber ....
Schildere Deine reales Bedingungen, alles andere ist nur komplizierter.

Und zeige mal ein Bild des Beziehungsfensters.
Zitatoder ich auch gleich in der Tabelle Betten die Zimmernummer eingeben kann und die Inventarnummer steht gleich in der Zimmertablle beim richtigen Zimmer.
Das ist bei Access nicht möglich, es erfolgt keine direkte Eingaben in die Tabellen, alles läuft über Formulare. Und die Darstellung der Daten erfolgt über Abfragen die sich die Daten aus verschiednen Tabellen holen können.
Für die Tabellen müssen auch Beziehungen angelegt werden. Ist Dir das klar ?

Das läuft alles in den Grundfunktionalitäten völlig ohne VBA.

Du solltest Dich erst mal mit den Grundlagen beschäftigen:
https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/
und
https://www.access-tutorial.de/

Nachtrag:
ZitatDazu mach ich für die Kästen, Betten, ... je eine eigene Tabelle wo ich das Modell,Größe, Inventarnummer, Infos usw.. eintrage. Jetzt mach ich mir eine eigene Tabelle die sich Zimmer nennt.
Das habe ich erst richtig gelesen nach der Antwort von Franz. Daher auch von mir die Anmerkung dass das unbrauchbar ist. Für alle Zimmer eine Tabelle, nur dann funktioniert das auch mit meinem Vorschlag n:m Beziehung.
Gruß Klaus

DF6GL

Hallo,


gleich in die Vollen:  vergiss das Konzept mit den separaten Tabellen für jedes Zimmer oder jede Mobiliarart...

Siehe (studiere) unten stehende Links 1, 1a und 1b und baue nach diesen Regeln/Vorgaben die Tabellen zusammen.

Benutze auch keine Nachschlagefelder in den Tabellen, ebenso wenig Mehrwert- oder Anlagefelder in Tabellen.
Verzichte dringend auf Sonder-, Leerzeichen und reservierte Wörter bei der Benamsung der Objekte.

Erst wenn das Tabellenkonzept schlüssig steht, werden Formulare, Berichte und Abfragen erstellt. Datenmanipulationen geschehen hauptsächlich über/mit Formulare/n.

ZitatDas mit dem Hotel ist nur ein Beispiel
Und warum erzählst Du nicht die reale Situation? Ist die ein Geheimnis? Ich denke, wir werden schon mit der Komplexität fertig..  8)


Tabellenbeispiel für das Beispiel (minimal):

tblGebäude

tblEtagen

tblRäume

tblRaumArten

tblInventare

tblInventarArten

tblRaumInventare


Alle Tabellen besitzen (zwingend) einen Primärschlüssel. In Beziehung stehende (und das sind hier alle) besitzen ein (oder mehrere) Fremdschlüsselfeld(er) als Referenz zur entspr. 1-Tabelle. (Das verstehst Du, wenn Du die o. g. Links durchgearbeitet hast)



Zitatwenn ich jeden Gegenstand nur einem Zimmer zusteilen kann

Dies wird später in Formularen mit z. B. Kombifelder gelöst, die dynamisch nur die noch aktuell verfügbaren Inventare zur Auswahl anbieten.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo Mexx,
Anbei ein Minimalst-Beispiel.
Franz' Vorschläge weiterer Tabellen wären zu ergänzen/einzubauen.
gruss ekkehard
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)

Mexx

Hallo,
danke für eure Antworten.

Mein Vorhaben ist wohl doch etwas komplizierter als ich Gedacht habe....
Muss mich da wohl zuerst noch etwas mehr einarbeiten und versehen wie Access bzw. eine Datenbank funktioniert und arbeitet.
Aber da es soviele Möglichkeiten bietet kann man da nicht wirklich an einem Beispiel üben, ich hab halt kein passendes gefunden.

Das mit der Nachschlagefunktion war auf die Formulare bezogen, und ich möchte die Daten dann auch mit einem Formular eingeben. (da habe ich auch schon erste Erfahrungen mit den Beziehungen gemacht)
Im Moment habe ich aber keine Datenbank mehr weil ich diese wieder gelöscht habe, ich möchte von Anfang an richtig damit beginnen.

Es geht um eine Firma mit ein paar Firmenfahrzeugen in denen halt bestimmte Gegenständen bzw. technische Geräte sind, und um eine bessere übersicht über alles zu haben würde ich eben gerne eine kleine Access Datenbank machen, aber auch weil ich es einfach mal probieren will Access funktioniert. Ich könnte auch alles in Excel Tabelle machen..
Mir erschien das Beispiel mit den Hotel einfacher weil man es sich leichter vorstellen kann.
Und vielleich will ich später mal für mein privates Inventar eine Datenbank machen, aber das ist noch Zukunftsmusik.

Ich könnte natürlich auch alles in eine Tabelle mittels einem Formular eingeben, aber ich hab mir gedacht wenn ich dann in einem Hauptformular nur die Felder auswähle dich ich brauche. In den anderen Tabellen kann ich zb. noch Infos dazu schreiben die ich eben in der anderen Tabelle nicht brauche/eingeben will.

Ich werde mich morgen mal mit den Grundlagen beschäftigen und mich einlesen, heute habe ich dazu keine lust mehr...

Danke euch!


Beaker s.a.

@Mexx
Zitatund um eine bessere übersicht über alles zu haben
Die Basis dazu hast du doch in meiner Beispiel-DB. Die Tabellennamen
sind da natürlich allgemein gehalten, aber die Beispiel-Daten entsprechen
deinem ersten Vorhaben. Und ob das nun Räume und Einrichtungsgegen-
stände oder Fahrzeuge und Zubehör sind spielt doch für's Beispiel keine
Rolle.
In den HFo siehst du entweder zu einem Raum/Fahrzeug (N) alle zugeordneten
Einrichtungsgegenstände /Zubehör (M), oder zu einem Einrichtungsgegenstand/
Zubehör die Räume/Fahrzeuge in denen die stehen/verbaut sind.
DU musst dir jetzt überlegen welche Daten du zu welcher Entität erfassen/
auswerten willst. Da wird es dann Eigenschaften geben, die wiederum in
weiteren Tabellen gespeichert werden müssen; - z.B. Hersteller, Modell,
Farbe u.ä.
ZitatIch werde mich morgen mal mit den Grundlagen beschäftigen und mich einlesen
Das mach mal. Dann klappt das auch mit der korrekten Anbindung weiterer
Tabellen. Und zeige uns deine Versuche, wir helfen gerne.
Ein hilfreiches Tool für Anfänger zur Datenmodellierung ist dieses hier:
http://www.buch.andreasstern.de/adamo.php
gruss ekkehard
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)