Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi QReport aus mehreren Tabellen aufbauen? SQL Join? (https://www.delphipraxis.net/13878-qreport-aus-mehreren-tabellen-aufbauen-sql-join.html)

Jetro223 28. Dez 2003 13:58


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:
Tabelle 1:
Artikelnummer
.
.
.
LNR
und

Code:
Tabelle 2:
LNR
Name
Ich erstelle jetzt einen QuickReport, in dem ich einige Daten aus Tabelle 1 ausdrucken möchte.

Code:
QuickReport:

Artikelnummer . . . LNR
Nun soll aber in den Report noch der zur Spalte "LNR" gehörende "Name" aus Tabelle 2.

Also:

Code:
Artikelnummer(Tabelle1) . . . Name(Tabelle2) . . .LNR(Tabelle1)
So rufe ich den QuickReport auf:

Delphi-Quellcode:
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;
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).

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:
SELECT Name
FROM artikel, tabelle2
WHERE tabelle2.lnr = QRDBText.Caption
... könnte es so funktionieren? Und wenn ja, WANN muss ich das aufrufen :))

Ich freue mich schon auf eure Antworten :)

Edit: Oder geht das irgendwie über so ein Lookup Field?

p0ke 28. Dez 2003 17:39

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

Jetro223 28. Dez 2003 17:56

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:
SELECT * FROM "artikel.DB" Artikel
   INNER JOIN "lieferanten.db" Liefer
   ON (Artikel.LNR = Liefer.LNR)
Funktioniert das auch im SQL Builder, aber irgendwie scheint der Report n(noch) nicht drauf zugreifen zu können.

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 :)

Jetro223 28. Dez 2003 18:13

Re: QReport aus mehreren Tabellen aufbauen? SQL Join?
 
Edit : Hoppala, ich wollte eigentlich editieren...

Edit :

So, also mit der jetzigen Anweisung

SQL-Code:
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
Stellt er mir das, was ich haben will richtig im DBGrid dar.

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...?

mikhal 29. Dez 2003 05:26

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

Jetro223 29. Dez 2003 15:59

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 11:40 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