Abfrage über mehrere Ebenen

Guten Abend / Morgen,

ich habe folgende Tabellen:
tblArtikel: idPArtikel, idSStatus, txtArtikel
tblStatus: idPStatus, intStatus
tblArtikelStruktur: idPArtikelStruktur, idSArtikelMutter, idSArtikelTochter, idSStatus

Dies ist ein Teil meiner Struktur für eine Stückliste. Ein Artikel „A“ kann einen Status „frei“ haben. Der Artikel „A“ ist in der Struktur von Artikel „B“ mit dem Status „frei“. Der Artikel „B“ hat den Status „frei“.
Nun wird Artikel „B“ in die Struktur von Artikel „C“ eingetragen.
In der Struktur von Artikel „C“ sind auch Artikel „D“ und „E“ mit Status „unfrei“.

Als nächsten Schritt möchte ich beim Wechsel des Status von „C“ auf „frei“ ALLE Teile, die in der Struktur mit dem Status „frei“ vorhanden sind auflisten.
Die Abfrage soll dann folgendes Ergebnis bringen:
A
B
C

Arbeite gerade mit Access 2000. Leider fehlt mir hier ein Denkanstoß.
Falls noch Informationen fehlen, bitte melden. Die Struktur kann natürlich auch noch viel tiefer sein (10, 20 oder 30 Ebenen).

Schöne Grüße,

Oliver.

N’abend,

ich habe folgende Tabellen:
tblArtikel: idPArtikel, idSStatus, txtArtikel
tblStatus: idPStatus, intStatus

ok, das ist die Vorgabetabelle für idSStatus und nicht weiter relevant

tblArtikelStruktur: idPArtikelStruktur, idSArtikelMutter,
idSArtikelTochter, idSStatus

ich würde mal sagen: hier liegt der Fehler
Der Status hat hier nichts zu suchen, da es keinen Status für Mutter/Tochter gibt, sondern nur pro Artikel.

Arbeite gerade mit Access 2000. Leider fehlt mir hier ein
Denkanstoß.

ok, dann versuche ich mal zu stoßen:

  • Abfrage-Assistenten öffnen
  • tblArtikelStruktur als Mastertabelle hinzufügen
  • tblArtikel für Mutter hinzufügen
  • tblArtikel für Tochter hinzufügen
  • ID-Felder entsprechend verbinden (drag & drop)
  • Feld: Mutter_idSStatus in eine Spalte ziehen
  • Ausdruck benennen z.B. = IDS_Mutter:
  • Kriterium für diese Spalte: „frei“
  • Feld: Tochter_idSStatus in eine Spalte ziehen
  • Ausdruck benennen z.B. = IDS_Tochter:
  • Kriterium für diese Spalte: „frei“
  • fertig

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo Wolfang,

danke für Deine Antwort.

tblArtikelStruktur: idPArtikelStruktur, idSArtikelMutter,
idSArtikelTochter, idSStatus

ich würde mal sagen: hier liegt der Fehler
Der Status hat hier nichts zu suchen, da es keinen Status für
Mutter/Tochter gibt, sondern nur pro Artikel.

Den Status für Mutter / Tochter gibt es. Ich habe einen Artikel, der selbst als „frei“ gekennzeichnet sein kann. Nun kann dieser Artikel in der Struktur eines anderen Artikel auftauchen. Hier kann dieser Artikel dann auch den Status „frei“ haben.
Es gibt noch viel mehr Status, die ich der Einfachheit nicht aufgeführt habe. So sollen z.B. in einer Stückliste Teile bereits bestellt werden können (Status „frei“ in Struktur) und andere noch nicht (z.B. noch nicht sicher ob dieses Teil verwendet wird.

  • Abfrage-Assistenten öffnen
  • tblArtikelStruktur als Mastertabelle hinzufügen
  • tblArtikel für Mutter hinzufügen
  • tblArtikel für Tochter hinzufügen
  • ID-Felder entsprechend verbinden (drag & drop)
  • Feld: Mutter_idSStatus in eine Spalte ziehen
  • Ausdruck benennen z.B. = IDS_Mutter:
  • Kriterium für diese Spalte: „frei“
  • Feld: Tochter_idSStatus in eine Spalte ziehen
  • Ausdruck benennen z.B. = IDS_Tochter:
  • Kriterium für diese Spalte: „frei“
  • fertig

Das versuche ich trotzdem mal. Vielleicht habe ich damit ja schon den gewünschten Erfolg. Das Problem ist eben, dass ich nicht weiß, wie viele Ebenen vorkommen können: Maschine - Baugruppe - Unterbaugruppe - Schweissteil - Rohmaterial (einfache Struktur).
Jeder Artikel kann theoretisch in beliebig vielen Strukturen auftauchen.

Schöne Grüße,

Oliver.

Hallo Oliver,

Den Status für Mutter / Tochter gibt es.

so rein vom Verständnis her macht es keinen Sinn.

Ich habe einen Artikel, der selbst als „frei“ gekennzeichnet sein kann.

richtig, ein Artikel

Nun kann dieser Artikel in der Struktur eines anderen Artikel
auftauchen. Hier kann dieser Artikel dann auch den Status
„frei“ haben.

richtig, der Artikel

Das was ich meine hast du soeben niedergeschrieben. Einen Status kann nur der Artikel haben, nie die Kombination von mehreren Artikeln, denn dann wäre es wieder ein Artikel (was eine Kombination ja nicht ist)

Aus diesem Gedanken heraus kann die Kombination beliebig viele Artikel und Verschachtelungen beinhalten.

Erst wenn alle Artikel verfügbar sind, kann die Kombination verfügbar sein. D.h. der Status einer Kombination ist nie fest (in einem Feld), sondern immer variabel aus den Stati der Artikel)

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo,

m. E. ist eine mehrstufige Stücklistenauflösung eine komplexe Angelegenheit und mit SQL allein nur trickreich zu erreichen. Am Besten bietet sich eine VBA-Lösung mit Rekursiv-Funktion(en) an.

lad Dir mal die Knowhow-DB bei www.freeaccess.de herunter. Dort ist ein Beispiel für eine Stücklistenauflösung zu finden.

http://www.freeaccess.de/knowhow.asp

weiterhin evtl.:

http://www.freeaccess.de/MS-Access-Artikel.asp?ID=99

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!