![]() |
QReport aus mehreren Tabellen aufbauen? SQL Join?
Hallo, da mir hier immer so genial geholfen wird und sich bisher keiner über meine Fragerei beschwert...*hüstel*:
Also ich hab immer noch meine Paradox 7 Datenbank (Zugriff via TQuery und SQL). Die ist inzwischen auf 2 Tabellen "gewachsen".
Code:
und
Tabelle 1:
Artikelnummer . . . LNR
Code:
Ich erstelle jetzt einen QuickReport, in dem ich einige Daten aus Tabelle 1 ausdrucken möchte.
Tabelle 2:
LNR Name
Code:
Nun soll aber in den Report noch der zur Spalte "LNR" gehörende "Name" aus Tabelle 2.
QuickReport:
Artikelnummer . . . LNR Also:
Code:
So rufe ich den QuickReport auf:
Artikelnummer(Tabelle1) . . . Name(Tabelle2) . . .LNR(Tabelle1)
Delphi-Quellcode:
Das Dataset vom Quickreport, der sich auf einer anderen Form befindet steht auf dem Query von der ersten Form (wo ich noch ein DBGrid hab' und die ganze Bearbeitung der Daten passiert).
procedure TFArtikel.BVorschauClick(Sender: TObject);
var slSQL : TStrings; sMessage : string; begin //Artikelnummer If RadioButtonArtNr.Checked Then If (Length(EDArtNrVon.Text) = 5) AND (Length(EDArtNrBis.Text) = 5) Then Begin slSQL := DB.SQL; DB.SQL.Clear; DB.SQL.Add('SELECT * FROM "c:\artikel.db" WHERE ArtNr BETWEEN ' + EDArtNrVon.Text + ' AND ' + EDArtNrBis.Text + ' ORDER BY ArtNr'); DB.Open; FQRArtNr.QuickRep1.Preview; DB.SQL := slSQL; DB.Open; End; end; Frage: Wie bekomm ich es so hin, das er automatisch zur Spalte "LNR" aus Tabelle 1 im Quickreport den Wert von "Name" aus Tabelle 2 holt? Ich dachte irgendwie mit einem SQL-Join (was ich nebenbei gesagt noch nie gemacht hab' :)), so von wegen
SQL-Code:
... könnte es so funktionieren? Und wenn ja, WANN muss ich das aufrufen :))
SELECT Name
FROM artikel, tabelle2 WHERE tabelle2.lnr = QRDBText.Caption Ich freue mich schon auf eure Antworten :) Edit: Oder geht das irgendwie über so ein Lookup Field? |
Re: QReport aus mehreren Tabellen aufbauen? SQL Join?
Hallo erstmal,
ich weiß noch nich ob ich dich ganz verstehe, bzw. die eine oder andere Info bräuchte ich noch. Ist Tabelle 2 eine von Artikel abhängige Tabelle? Wenn du innerhalb einer Query 2 Tabellen verknüpfen willst, dann musst du ja irgendwie eine Gemeinsamkeit haben, z.B. eine Artikelnummer, die in beiden Tabellen vorhanden ist. Ich schreibe hier mal ein kleines Beispiel, vielleicht bringt dich das weiter:
SQL-Code:
SELECT Name FROM Artikel A, Unterartikel U
WHERE A.Artikelnummer=U.Artikelnummer Ich weiß nich, vielleicht kannst du nochmal ein paar mehr Hintergründe nennen, was du da genau machst. Vielleicht hilft dir das aber ja schon weiter. Oder du wartest noch ein wenig, es gibt hier noch ein paar Leute die kompetentere Antworten geben können :) Gruss p0ke |
Re: QReport aus mehreren Tabellen aufbauen? SQL Join?
Hallo,
danke erstmal für deine Antwort :) Also ich komm der Sache langsam näher. Zur Info für dich: In beiden Tabellen gibt es das Feld LNR. In Tabelle 2 steht zu "LNR" aber noch eine Detailinformation der "Name". Und ich will das Feld "Name" aus Tabelle 2 mit drucken. Er soll: In Tabelle 1 gucken --> Aha, LNR hat Nr. 22 und dann in Tabelle 2 gucken bei LNR Nr. 22 was da für ein "Name" steht. Und diesen Namen will ich dann mit drucken. Mit
SQL-Code:
Funktioniert das auch im SQL Builder, aber irgendwie scheint der Report n(noch) nicht drauf zugreifen zu können.
SELECT * FROM "artikel.DB" Artikel
INNER JOIN "lieferanten.db" Liefer ON (Artikel.LNR = Liefer.LNR) Ich probier erstmal weiter. Vielleicht hat noch jemand einen Tipp für mich :) Edit: OK, wie es scheint greift der Report jetzt darauf zu, aber leider zeigt er immer nur eine Zeile an...wenn ich das jetzt noch wegbekomme, also das er alles anzeigt...dann haut's hin :) |
Re: QReport aus mehreren Tabellen aufbauen? SQL Join?
Edit : Hoppala, ich wollte eigentlich editieren...
Edit : So, also mit der jetzigen Anweisung
SQL-Code:
Stellt er mir das, was ich haben will richtig im DBGrid dar.
SELECT * FROM "artikel.DB" Artikel
INNER JOIN "lieferanten.db" Liefer ON (Artikel.LNR = Liefer.LNR) WHERE Artikel.ArtNr Between 12000 AND 20000 ORDER BY Artikel.ArtNr Im QuickReport allerdings nur die erste Zeile. Ich hab im Quickreport, dessen DataSet mein TQuery ist, einfach ein neues DatenbankTextFeld eingefügt und dieses erkennt auch den neuen Feldnamen "Name" der ja aus der anderen Tabelle ist. Es fehlt 100%ig nicht mehr viel zum funktionieren :) Bloß was...? |
Re: QReport aus mehreren Tabellen aufbauen? SQL Join?
Bist du sicher, daß du die DataSet deines QuickRep auf deine Query gesetzt hast?
Oder betrachtest du nur die Vorschau deines Reports? Dann wird auch nur der erste Datensatz angezeigt. Grüße Mikhal |
Re: QReport aus mehreren Tabellen aufbauen? SQL Join?
Ja, 100prozentig sicher.
Ich schau mir auch immer nur die Vorschau an. Aber bevor ich die ganze Sache mit der anderen Tabelle eingefügt hab', hab ich auch in der Vorschau alle Daten gesehen, die ich sehen wollte und nicht nur die erste Zeile... Mfg :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz