1.8k Aufrufe
Gefragt in Datenbanken von
Frage ans Forum:

Ist es möglich automatisch in einer Zwischen-tbl als Primär-ID eines Datensatzes die Primär-ID's von 2 oder mehr Tabellen (die da zusammengeführt werden) in Blocks zu je 3 Ziffern zusammen zu führen?
Beispiel wie ich es mir vorstelle:
tbl-TrackTitel hat ID 000 001 bis derzeit 010 823
tbl-Interpreten hat 001 bis 218
Wenn ich nun eine Zwischen-tbl erstelle die z.B. tbl-TrackTitel mit tbl-Interpreten (später noch mit tbl-Text und Musik (z.B. Lennon / McCartney) vereint soll dann die ID so aussehen:
Track: All You Need Is Love-ID 000 129,
Interpreten: The Beatles-ID 010
Text und Musik: Lennon / McCartney-ID 024
Als neue Gesamt-ID sollte dann 129 010 024 zu sehen sein
Kann man das automatisieren oder muß ich alles händig machen?
Ich bin noch ziemlich unbedarft in access und habe bisher nur mit der Entwurfsansicht sowie den Beziehungen gearbeitet. An SQL oder gar VBA-Makros hab ich mich noch nicht rangewagt.
Sollte da eine Lösung möglich sein bitte gaaanz einfach erklären :-) da ich auch niemand zum direkten Austausch habe mit dem ich auftretende Fragen sofort besprechen kann.
Ach ja – ich hab office-pro 2003 und win-xp SP3

Vielen Dank für alle Bemühungen

Gringo

6 Antworten

0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Gringo,

über welchen Schlüssel sind den die drei (oder mehr) Tabellen verbunden? Wenn diese Beziehung exisistiert, kannst du über eine Abfrage alle drei Tabellen aufnehmen, die Tabellen verknüpfen (falls nicht schon in den Beziehungen a priori definiert). Den neuen KEY kannst du dann aus den Schlüssel der Einzeltabellen aufbauen

HAUPTKEY: mid([tbl-TrackTitel].ID,5) & " " & [tbl-Interpreten].ID & " " & [Text und Musik].ID

Ohne eine eindeutige Beziehung der Tabellen geht das natürlich nicht! Passt das so?

Gruß Ralf
0 Punkte
Beantwortet von
Hallo Ralf,

danke erst mal für deine Antwort, hab jetzt nur nicht wirklich Zeit. Werde morgen wieder an die db gehen.
Verstehe ich es richtig, das ich diesen
HAUPTKEY: mid([tbl-TrackTitel].ID,5) & " " & [tbl-Interpreten].ID & " " & [Text und Musik].ID
Code in eine Abfrage der Zwischentabelle dieser 3 tbl einbauen soll?
Oder in ein aus dieser Abfrage zu ziehendes Formular?
Und wenn ja - bitte - wo genau wird der dann eingetragen (mal so dumm frag)?

Danke und bis morgen

Gruß Gringo
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Gringo,

erstelle einfach eine Abfrage mit deinen drei Tabellen und baue dieses neue Feld mit rein. Ich gehe dabei immer noch davon aus, dass eine Beziehung zwischen den Tabellen existiert. In diesem Fall funktioniert mein Vorgehen. Eine physikalische Zwischentabelle benötigst du dann nicht. Vielleicht kannst du die Frage beantworten, wie z.B. der Tracktabelle der Track "Track: All You Need Is Love-ID 000 129" mit der Tabelle "Interpret" der Interpreten: "The Beatles-ID 010" verknüpft ist, ohne das du dein "Wissen" darüber anwendest. Ich stelle mir vor die ID "010" aus der Interpretentabelle steht auch in der Tracktabelle als Feld, z.B. "InterpretenID".

Viel Spaß beim Testen morgen...

Gruß
Ralf
0 Punkte
Beantwortet von Einsteiger_in (83 Punkte)
Hallo Ralf

Zuerst mal hab ich mich nun angemeldet um alles besser zu verfolgen
Hab mal etwas rumprobiert und bin nicht wirklich weiter gekommen
3 tbl zur Probe erstellt und miteinander so verknüpft:

tbl "Tracks" enthält Felder
Track-ID (AutoWert)
Track-Name (Text)
Text-Musik-Nr (Zahl – Long Integer)
Interpret-Nr (Zahl-Long Integer)

Die tbl's "Text-Musik" und "Interpreten" enthalten nur ihre ID sowie ein Namensfeld und sind mit tbl "Tracks" verknüpft.
Jetzt deinen Code in abf-Feld eingefügt (Namen angepasst!) und haken gesetzt.
Bei Umschalt auf "Ansicht" kommt nun eine Parameterabfrage der Reihe nach über alle tabellen.
Weiß nicht, was ich da eingeben soll und wenn ich immer nur (4x) mit ok bestätige kommt eine Fehlermeldung:
"Dieser Ausdruck wurde falsch eingegeben oder er ist zu komplex um ausgewertet zu werden…" Ich soll den Ausdruck vereinfachen, indem ich Teilen des Ausdrucks Variablen zuweise. Keine Ahnung wie das geht.
Meine Vermutung ist aber, das ich doch eine Zwischentabelle brauch. Schließlich kann ein Track ja auch von verschieden Interpreten gesungen werden – und dann wird’s kompliziert
Von gestern noch nen dicken Kopf dazu (Feiertag) naja – vielleicht kommt am WE die Erleuchtung oder mir wird nochmal geholfen

Danke Gringo
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Gringo,

ein konkreter Track (nicht Lied) wird doch immer von einem Interpreten (resp. Gruppe) gesungen oder irre ich mich da. Deine Schilderung der Meldungen besagt eigentlich nur, dass du die Felder noch nicht korrekt auf deine Tabellen umgesetzt hast. Mit deinen obigen Feldangaben würde das zusammengesetzte Feld so aussehen:

HAUPTKEY: mid(tracks.[Track-ID], 5) & " " & [Interpreten].ID & " " & [Text-Musik].ID

Ach ja, wenn du die (blöden) Bindestriche in deinen Feld und Tabellennamen weg lassen würdest, hättest du ein leicheres Leben und die Einbettung in [...] würde entfallen können. Sollte

Schließlich kann ein Track ja auch von verschieden Interpreten gesungen werden – und dann wird’s kompliziert

treffen, brauchst du wirklich eine Zwischentabelle, die du manuell füllen musst, da keine Abfrage auf der Welt, weis, welches Lied wecher Interoret singt ;-).

Viel Spaß beim Experimentieren...

Gruß
Ralf
0 Punkte
Beantwortet von Einsteiger_in (83 Punkte)
Hallo Ralf,

sry dass ich mich erst so spät melde aber hast du schon mal von nem Rentner gehört der Zeit hat? :-)
Also wahrscheinlich bin ich etwas zu "Weiß" - "Blond" kann ich nicht mehr sagen- jedenfalls hab ich das so nicht hingekriegt mit der zusammengesetzten Primär-ID.
Ich wollt's ja auch nur für meine Schallplatten und hab inzwischen die db so umgebaut, daß ich für jeden "TrackTitel" in Verbindung mit den jeweiligen Textern und Komponisten eine eigene Autowert-ID habe und über eine Zwischentabelle die Interpreten dazusetzen kann.
Die können durchaus pro Titel verschiedene sein. Hier ist wohl die Definition "Track" oder "Lied" unterschiedlich und deshalb hab ich in der neuen db einfach "Tracktitel" gewählt.
Danke dir nochmal für deine Geduld und sicherlich hab ich auch in Zukunft noch die ein oder ander Frage zu Office im Allgemeinen und Access im Besonderen.

Ich wünsche dir sowie allen Helfern hier ein schönes Pfingstfest

Gruß Gringo
...