Einzelnen Beitrag anzeigen

Yadon

Registriert seit: 13. Feb 2004
110 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Eine Tabelle verweist auf sich selbst

  Alt 28. Jun 2005, 02:57
Hi,

das Problem kenne ich, hatte ich selbst vor Jahren, als ich mir ein Archiv für CDs, Schallplatten etc. angelegt habe. Plötzlich wollte ich alle Informationen, die man so bekommt, speichern. Und Tabelle verweist auf sich selbst geht gar nicht so schwer. Ich versuche mal, jetzt ordentlich zu erklären, wie ich das gelöst habe.

Ich habe zwei Tabellen:

Artist - hier sind sämtliche Künstler eingetragen
  • Artist_ID
  • Artist_Name
  • ... sonstewas
ArtistByArtist - hier trage ich nur die IDs der Künstler ein und die Art der Verbindung etc.
  • Artist_ID
  • ByArtist_ID
  • ...egal was für die Beziehung wichtig ist
Dann habe ich mir ein zweites Form angelegt, welches vom Hauptform aufgerufen wird.
Damit ist auch automatisch der erste Künstler festgelegt und dessen ID bekannt.

Auf dem zweiten Form habe ich dann sicherheitshalber oben noch mal den Namen des aufrufenden Künstlers vermerkt, damit ich das auch noch weiß, wenn ich im Hauptform schon andere Dinge tue.
Weiterhin liegt dort ein DBGrid, in dem die Einträge niedergelegt werden und eine DBLookupComboBox. Wenn ich aus der Look..Box einen Namen auswähle, dann wird er direkt ins Grid eingetragen. Und die Beziehungen stelle ich folgendermaßen her:

Dem DBGrid liegt eine Query zugerunden mit folgender SQL:
Delphi-Quellcode:
SELECT
  Artist_ByArtist.*, Artist.Artist_Name, Artist_ID
FROM
  Artist, Artist_ByArtist
WHERE
  (ByArtist_ID = Number OR Artist_ID = Number)
AND
  (Artist.Artist_ID <> Number
AND
  (ByArtist_ID = Artist.Artist_ID OR Artist_ID = Artist.Artist_ID))
ORDER BY
  Artist_Name
Den Parameter Number übergebe ich bei Aufruf des zweiten Forms.

Die Loo....Box nutzt folgende Query:
Delphi-Quellcode:
SELECT
  Artist_ID, Artist_Name
FROM
  Artist
ORDER BY
  Artist_Name
Das ganze klappt seit Jahren einwandfrei, hab allerdings 'ne Weile rumgefrickelt, bis ich es hatte und mir auch von schlauen Leuten helfen lassen.

Oh, beinahe hätte ich's vergessen, nutze ADO und ACCESS.
Gute Nacht!
Yadon
  Mit Zitat antworten Zitat