Access - Spalten miteinander verknüpfen
Hallo
Leider sind die Access Stunden aus der Schulzeit schon etwas her, desswegen auch der komische Titel. (weis nicht genau wie ich es fomulieren sollte ;)
Es geht um eine Access DB, in der ich unsere Hardware aufliste.
Es gibt eine Tabelle Hardware:
und eine Tabelle Geräte
In der Tabelle Geräte wird ein Modell einem Typ zugewiesen. zb:
Modell: HP 8570w
Typ: Notebook
In der Tabelle Hardware hab ich eine Spalte Modell, in der ich bei neuen Einträgen das Modell auswählen kann.
Jetzt will ich noch eine Spalte Typ in der Tabelle Hardware machen. Diese soll aber direkt über das Modell ausgefüllt werden.
zb:
neuer Eintrag -> ich wähle das Modell aus "HP 8570w", jetzt soll dann automatisch die Spalte Typ ausgefüllt werden.
wie mach ich das am einfachsten? und wie für ich den richtigen Typ bei den bestehenden Einträgen hinzu?
Leider sind die Access Stunden aus der Schulzeit schon etwas her, desswegen auch der komische Titel. (weis nicht genau wie ich es fomulieren sollte ;)
Es geht um eine Access DB, in der ich unsere Hardware aufliste.
Es gibt eine Tabelle Hardware:
und eine Tabelle Geräte
In der Tabelle Geräte wird ein Modell einem Typ zugewiesen. zb:
Modell: HP 8570w
Typ: Notebook
In der Tabelle Hardware hab ich eine Spalte Modell, in der ich bei neuen Einträgen das Modell auswählen kann.
Jetzt will ich noch eine Spalte Typ in der Tabelle Hardware machen. Diese soll aber direkt über das Modell ausgefüllt werden.
zb:
neuer Eintrag -> ich wähle das Modell aus "HP 8570w", jetzt soll dann automatisch die Spalte Typ ausgefüllt werden.
wie mach ich das am einfachsten? und wie für ich den richtigen Typ bei den bestehenden Einträgen hinzu?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 205641
Url: https://administrator.de/contentid/205641
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
3 Kommentare
Neuester Kommentar
Moin @manibam,
dann wäre der erste Schritt das Anlegen einer Parent-Tabelle "Typen" mit zwei (oder mehr) Spalten
... und einer kleinen schlanken Lookup-Tabelle "Modelltyp" mit den Spalten
...und je
Wenn du das hast und in der Tabelle "Typ" die ersten drei Datensätze hast, dann treffen wir uns wieder hier.
Grüße
Biber
dann wäre der erste Schritt das Anlegen einer Parent-Tabelle "Typen" mit zwei (oder mehr) Spalten
- "Typ", Text, uniquePK (ich würde hier auf eine künstliche ID verzichten bei zu erwartenden 30+x Typen)
- "Typbeschreibung", Text, opional
- "whatever" du sonst noch brauchst
... und einer kleinen schlanken Lookup-Tabelle "Modelltyp" mit den Spalten
- "Modell" vom gleichen Feldtyp und der gleichen Länge wie "Modell" in der Tabelle "Geräte"
- "Typ" vom gleichen Feldtyp und der gleichen Länge wie "Typ" in der Tabelle "Typen"
...und je
- einer Parent-Child-Beziehung zwischen "ModellTyp" und "Geräte"
- einer Parent-Child-Beziehung zwischen "Typ" und "ModellTyp"
Wenn du das hast und in der Tabelle "Typ" die ersten drei Datensätze hast, dann treffen wir uns wieder hier.
Grüße
Biber
Moin manibam,
sorry, ich hatte zwischendurch noch andere Sachen auf dem Zettel.
Nochmal kurz zur Parent-Child-Foreignkey-Mimik:
Es funktioniert nur sinnvoll, wenn ich von einer Child-Tabelle, bei dir im Beispiel
Tabelle: Geräte (ist ein Child von Parent-Tabelle "Gerätetypen", die den PK GerätenTypen.ID hat )
Feldname: ID (AutoWert)
Feldname: Typ (Text) ---> hier muss das Feld den gleichen Datentyp+das gleiche Format haben wie der primary key der Parent-Tabelle
Feldname: Modell (Text) --> auch hier muss das Feld den gleichen Datentyp+das gleiche Format haben wie der
Tabelle: Gerätetypen
Feldname: ID (AutoWert) --> wenn das der PK ist, dann ist es eine Zahl und im Child muss es auch eine Zahl sein
Feldname: Typ (Text) --> wenn das der PK ist, dann ist es TEXT und er muss unique=eindeutig identifizierend sein und im Child muss es auch TEXT sein
Besser wäre IMHO diese Struktur:
Tabelle: Geräte ( hat den PK "ID", wenn du diesen Namen beibehalten willst oder "GeräteID", wenn du an später denkst)
Feldname: ID (AutoWert) --> PK
Feldname: Typ (Text) --> beide Felder brauchst du nicht, denn von "Modell" kommst immer auf den "GeräteTyp"
Feldname: Modell (Text) --> beide Felder brauchst du nicht, denn von "Modell" kommst immer auf den "GeräteTyp"
-> nimm da nur ModellID (wenn ModellID der PK von "Modelle" ist
Tabelle: Gerätetypen
Feldname: ID (AutoWert) --> ist PK, besser wäre "GeräteTypID", das findest du wieder)
Feldname: Typ (Text)
Tabelle: Hardware
Feldname: HWID (AutoWert) -> ist PK und sinnvoll benannt)
Feldname: Besitzer (Text)
Feldname: Modell (Text) --> da könnte "ModellID" stehen als Querverweis auf "Modells"
Feldname: Typ (Text)
--> siehe oben: --> beide Felder brauchst du nicht, denn von "Modell" kommst immer auf den "GeräteTyp"
Fehlend ist noch eine Tabelle
Tabelle: Modelle
Feldname: ModellID (AutoWert) --> ist PK
Feldname: ModellText (Text)
Feldname: ModellTyp (Zahl) --> von hier ein Foreignkey auf die "GeräteTyp.GeräteTypID", was ja der Parent ist.
Diese "Modelle" wiederum ist der Parent von deinen "Geräte"n.
In "Geräte" gehört also ein Feld "ModellID", von wo eine FK-Beziehung auf "Modelle.ModellID" zeigt.
Im Zweifelsfall mach es wie die Profis.
Nimm einen Notizzettel, ca. 7x7cm, mal die vier ver###ten Tabellen als kleine Kästchen-Hierarchie daruf und zieh ein paar diagonale Linien, damit du siehst, welches Kiddie unter welchen Pappa gehört und wer der Oppa ist.
Grüße
Biber
sorry, ich hatte zwischendurch noch andere Sachen auf dem Zettel.
Nochmal kurz zur Parent-Child-Foreignkey-Mimik:
Es funktioniert nur sinnvoll, wenn ich von einer Child-Tabelle, bei dir im Beispiel
Tabelle: Geräte (ist ein Child von Parent-Tabelle "Gerätetypen", die den PK GerätenTypen.ID hat )
Feldname: ID (AutoWert)
Feldname: Typ (Text) ---> hier muss das Feld den gleichen Datentyp+das gleiche Format haben wie der primary key der Parent-Tabelle
Feldname: Modell (Text) --> auch hier muss das Feld den gleichen Datentyp+das gleiche Format haben wie der
Tabelle: Gerätetypen
Feldname: ID (AutoWert) --> wenn das der PK ist, dann ist es eine Zahl und im Child muss es auch eine Zahl sein
Feldname: Typ (Text) --> wenn das der PK ist, dann ist es TEXT und er muss unique=eindeutig identifizierend sein und im Child muss es auch TEXT sein
Besser wäre IMHO diese Struktur:
Tabelle: Geräte ( hat den PK "ID", wenn du diesen Namen beibehalten willst oder "GeräteID", wenn du an später denkst)
Feldname: ID (AutoWert) --> PK
Feldname: Typ (Text) --> beide Felder brauchst du nicht, denn von "Modell" kommst immer auf den "GeräteTyp"
Feldname: Modell (Text) --> beide Felder brauchst du nicht, denn von "Modell" kommst immer auf den "GeräteTyp"
-> nimm da nur ModellID (wenn ModellID der PK von "Modelle" ist
Tabelle: Gerätetypen
Feldname: ID (AutoWert) --> ist PK, besser wäre "GeräteTypID", das findest du wieder)
Feldname: Typ (Text)
Tabelle: Hardware
Feldname: HWID (AutoWert) -> ist PK und sinnvoll benannt)
Feldname: Besitzer (Text)
Feldname: Modell (Text) --> da könnte "ModellID" stehen als Querverweis auf "Modells"
Feldname: Typ (Text)
--> siehe oben: --> beide Felder brauchst du nicht, denn von "Modell" kommst immer auf den "GeräteTyp"
Fehlend ist noch eine Tabelle
Tabelle: Modelle
Feldname: ModellID (AutoWert) --> ist PK
Feldname: ModellText (Text)
Feldname: ModellTyp (Zahl) --> von hier ein Foreignkey auf die "GeräteTyp.GeräteTypID", was ja der Parent ist.
Diese "Modelle" wiederum ist der Parent von deinen "Geräte"n.
In "Geräte" gehört also ein Feld "ModellID", von wo eine FK-Beziehung auf "Modelle.ModellID" zeigt.
Im Zweifelsfall mach es wie die Profis.
Nimm einen Notizzettel, ca. 7x7cm, mal die vier ver###ten Tabellen als kleine Kästchen-Hierarchie daruf und zieh ein paar diagonale Linien, damit du siehst, welches Kiddie unter welchen Pappa gehört und wer der Oppa ist.
Grüße
Biber