Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi 2 Tabellen in einem Grid anzeigen - mit Master/Detail (https://www.delphipraxis.net/97847-2-tabellen-einem-grid-anzeigen-mit-master-detail.html)

Reinhardtinho 17. Aug 2007 09:48

Datenbank: SQL Server 2000 • Zugriff über: SDAC-Komponenten

2 Tabellen in einem Grid anzeigen - mit Master/Detail
 
Hallo zusammen,

Ich möchte gerne Daten aus zwei Tabellen in einem Grid anzeigen lassen, aber mit eingeschränkter Ergebnismenge. :shock:

Hier kurz die Felder:

1. Tabelle (Crosstable): Name: Cross_Artikel_Zubehoer
  • Artikel_ID --> (Fremdschlüssel auf Artikelstamm.ID)
  • Zubehoer_ID --> (Fremdschlüssel auf Artikelstamm.ID)
  • Modularikel

2. Tabelle: Name: Artikelstamm
  • ID --> (Primärschlüssel)
  • Name
  • Einkaufspreis
  • Verkaufspreis

So, nun genauer zum Problem.

Ich möchte, dass nun in meinem Grid alle Zubehörartikel angezeigt werden, wo Zubehoerartikel.Artikel_ID und Artikelstamm.ID gleich sind (aber nur für die Artikelstamm.ID, auf der ich grade positioniert bin - also nicht alle).

Beispiel:

Ein Artikel in Artikelstamm wurde ausgewählt und in dem Grid sollen nun alle dazugehörigen Zubehörartikel stehen. Die Zubehörartikel sind auch Teil des Artikelstamms.
Nun möchte ich zu jedem Zubehörartikel auch die Preise wissen (anzeigen reicht ...). :stupid:


Und das habe ich bereits:

SQL-Statement des Querys:

SQL-Code:
SELECT Artikel_ID, Zubehoer_ID, Modulartikel
FROM Cross_Artikel_Zubehoer, Artikelstamm
WHERE Artikel_ID = Artikelstamm.ID
und den Filter des Querys:

Delphi-Quellcode:
Query_Zubehoer.Filter  := 'Artikel_ID=' + IntToStr(Table_Artikel.FieldValues['ID']);
Query_Zubehoer.Filtered := True;

Da ich in SQL noch nicht so fit bin, habe ich bei dem Statement meine Schwierigkeiten.

Wie muss ich das Statement abändern, das ich immer die Preise von den Artikel erhalte, wo ich die IDs in der eingeschränkten Menge im Grid habe?


PS: Ich weiß, dass ist alles ein bisschen verwurschtelt, aber ich hoffe, dass ihr mir bei meinen Problem behilflich sein könnt.
Danke.

MFG
Lorenz

DeddyH 17. Aug 2007 10:09

Re: 2 Tabellen in einem Grid anzeigen - mit Master/Detail
 
Ich hoffe, dass ich Dich richtig verstanden habe:
SQL-Code:
SELECT A.Artikel_ID, A.Zubehoer_ID, A.Modulartikel, B.Name, B.Einkaufspreis, B.Verkaufspreis
FROM Cross_Artikel_Zubehoer A
JOIN Artikelstamm B ON A.Artikel_ID = B.ID
WHERE A.Artikel_ID = :wert
Und als Parameter wert dann halt die ID des aktuellen DS.

Reinhardtinho 17. Aug 2007 10:46

Re: 2 Tabellen in einem Grid anzeigen - mit Master/Detail
 
Liste der Anhänge anzeigen (Anzahl: 1)
Erstmals besten Dank DeddyH,

habe das SQL-Statement mal übertragen und sehe auch die Preise, allerdings sehe ich immer den Preis, von dem Artikel auf dem ich mich positioniert habe und nicht von den Zubehörartikeln.

Jetzt habe ich zum Beispiel in meinem Grid 3 Zubehörartikel mit den Preisen von meinem "Hauptartikel", also auf dem ich stehe im Artikelstamm. Ich möchte aber gerne die Preise der Zubehörartikel haben, die ja auch in der Artikelstammtabelle stehen.


MFG
Lorenz


PS: Ich habe mal ein Screenshot angehangen, der die Situation verdeutlichen soll. :-D

DeddyH 17. Aug 2007 10:49

Re: 2 Tabellen in einem Grid anzeigen - mit Master/Detail
 
Kann es sein, dass es noch eine weitere Tabelle mit den Zubehörartikeln gibt, die Du bisher verschwiegen hast?

Reinhardtinho 17. Aug 2007 10:55

Re: 2 Tabellen in einem Grid anzeigen - mit Master/Detail
 
Nein, wie kommst du darauf?

DeddyH 17. Aug 2007 10:59

Re: 2 Tabellen in einem Grid anzeigen - mit Master/Detail
 
Ich glaube, jetzt habe ich Dein Datenmodell verstanden, korrigier mich, wenn ich falsch liege:
Es gibt eine Tabelle mit Artikeln. Jeder Artikel kann wieder Zubehör zu einem Artikel aus derselben Tabelle sein, aufgelöst wird das Ganze durch die Crosstable. Stimmt das so?

Reinhardtinho 17. Aug 2007 11:00

Re: 2 Tabellen in einem Grid anzeigen - mit Master/Detail
 
Ja, korrekt.

DeddyH 17. Aug 2007 11:05

Re: 2 Tabellen in einem Grid anzeigen - mit Master/Detail
 
Dann versuch es mal so:
SQL-Code:
SELECT C.Name, C.Einkaufspreis, C.Vekaufspreis
FROM Artikelstamm A
JOIN Cross_Artikel_Zubehoer B ON A.ID = B.Artikel_ID
JOIN Artikelstamm C ON C.ID = B.Zubehoer_ID
WHERE A.ID = :wert

Reinhardtinho 17. Aug 2007 12:11

Re: 2 Tabellen in einem Grid anzeigen - mit Master/Detail
 
Super, klappt perfekt, bekomme jetzt immer die Preise der Zubehörartikel. :dance:

MFG
Lorenz

PS: Werde wohl ma nen Kursus in Sachen SQL belegen müssen. :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz