Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Report erstellen - wie Query gestalten (https://www.delphipraxis.net/172763-report-erstellen-wie-query-gestalten.html)

messie 21. Jan 2013 19:21

Datenbank: Firebird • Version: 2.5 • Zugriff über: Quickreport

Report erstellen - wie Query gestalten
 
Moin,

ich bin gerade dabei einen Quickreport auf Datenbank umzustellen. Dazu würde ich gerne die TQRDBText-Komponente benutzen. Die bietet als Property ein DataSet(meine Query), DataField und Mask (für die leidige Float-Formatierung).

Nun habe ich in meiner DB-Hierarchie den Fall, dass ich immer mehrere Ergebnisse gleicher Hierarchie bekomme.
Code:
SELECT
        Table1.ID, Table1.Param1, Table2.ID Table2.Param1, Table2.Param2, Table3.Param1, Table3.Param2
FROM
        Table1, Table2, Table3
WHERE
        Table1.UpIndex = 17
AND
        Table2.UpIndex = Table1.ID
AND
        Table3.UpIndex = Table2.ID
UpIndex ist der Index der jeweils höheren Hierarchie.
Mein Problem: Table3 enthält Messwerte in Param2, die aus verschiedenen Messungen (Table3.Param1) stammen. Damit sind die Felder nicht eindeutig und ich kann sie nicht direkt zuweisen.

Brauche ich für jede Ausgabekomponente eine eigene Query? Denn das wird zur Laufzeit erzeugt und kann theoretisch viele Queries bedeuten. Und die müssen ja so lange gefüllt bleiben, bis der Report ausgegeben wird.
Oder kann man das so verfeinern, dass ich für jedes Table3.Param1 ein eigenes Feld Table3.Param2 erzeugen kann?

Danke, Messie

Edit: SQL mit Code-Tags statt Quote-Tags versehen. Sieht beides nicht toll aus :wink:
Edit2: jetzt ist es lesbarer

messie 22. Jan 2013 12:36

AW: Report erstellen - wie Query gestalten
 
Ich möchte die Frage noch mal etwas verfeinern: kann ich in der Query temporäre Fields erzeugen, die ich dann nochmal mit einer Art eigenem Select füllen kann?

Ich habe nämlich festgestellt, dass unterschiedliche Queries in so einem Report auch ihre Fallstricke haben.

Grüße, Messie

Lemmy 22. Jan 2013 13:00

AW: Report erstellen - wie Query gestalten
 
hi,

Zitat:

Zitat von messie (Beitrag 1200073)
Ich möchte die Frage noch mal etwas verfeinern: kann ich in der Query temporäre Fields erzeugen, die ich dann nochmal mit einer Art eigenem Select füllen kann?

so was wäre doch eigentlich der perfekte EInsatzzweck einer Stored Procedure... Dann hast Du auf Clientseite weiterhin eine einfache Query

messie 22. Jan 2013 13:39

AW: Report erstellen - wie Query gestalten
 
Zitat:

Zitat von Lemmy (Beitrag 1200079)
hi,

Zitat:

Zitat von messie (Beitrag 1200073)
Ich möchte die Frage noch mal etwas verfeinern: kann ich in der Query temporäre Fields erzeugen, die ich dann nochmal mit einer Art eigenem Select füllen kann?

so was wäre doch eigentlich der perfekte EInsatzzweck einer Stored Procedure... Dann hast Du auf Clientseite weiterhin eine einfache Query

:oops::oops::oops:

ich probier' es mal....

p80286 22. Jan 2013 13:45

AW: Report erstellen - wie Query gestalten
 
Ich weiß jetzt nicht ob FB das kann:
Code:
select a.feld1,b.feld2
from tabelle a
     ,(select id,feld2 from tabellex) b
where a.id=b.id
Gruß
K-H

mkinzler 22. Jan 2013 14:07

AW: Report erstellen - wie Query gestalten
 
Kann FB ist aber nicht besonders performant. ( in anderen DBMS aber auch nicht)

jsheyer 22. Jan 2013 14:07

AW: Report erstellen - wie Query gestalten
 
so was ähnliches kann FB, wenn das Ergebnis eindeutig ist, z. B.

select a.field1, a.field2, (select field1 from b where b.field1=a.field3) as field3
from a
where a.field1='123'

Würde das innere select mehrere Datensätze liefern, kommt es zu einer Fehlermeldung.
man kann so aber auch mit den Aggregrat Funktionen arbeiten (sum, max, min, avg) oder andere Berechnungen anstellen.

select a.field1, a.field2, (select sum(field1) from b where b.field1=a.field3) as field3
from a
where a.field1='123'

Gruß
Jörg

Lemmy 22. Jan 2013 14:18

AW: Report erstellen - wie Query gestalten
 
Zitat:

Zitat von messie (Beitrag 1200085)
:oops::oops::oops:

ich probier' es mal....

wenn es nicht klapp, dann schick mir die Metadaten oder ein Backup der DB per PN, dann schraub ich dir die kurz zusammen.... Müsstest mir halt erklären wo die "berechneten Werte" herkommen...

p80286 22. Jan 2013 16:49

AW: Report erstellen - wie Query gestalten
 
[OT]
Zitat:

Zitat von mkinzler (Beitrag 1200092)
Kann FB ist aber nicht besonders performant. ( in anderen DBMS aber auch nicht)

Dann hab ich echt Glück, ich kann mich da nicht beschweren.

Gruß
K-H
[/OT]

jobo 22. Jan 2013 17:45

AW: Report erstellen - wie Query gestalten
 
Zitat:

Zitat von p80286 (Beitrag 1200087)
Ich weiß jetzt nicht ob FB das kann:
Code:
select a.feld1,b.feld2
from tabelle a
     ,(select id,feld2 from tabellex) b
where a.id=b.id

Das ist ein ganz normaler Join, oder?! Wo ist bitte der Unterschied zu
Code:
select a.feld1,b.feld2
from tabelle a
     ,tabellex b
where a.id=b.id
Zitat:

Zitat von mkinzler (Beitrag 1200092)
Kann FB ist aber nicht besonders performant. ( in anderen DBMS aber auch nicht)

Ich nutze FB nicht produktiv, aber das kann ich kaum glauben.


Und was hat das mit der Frage des TE zu tun?
Vielleicht habe ich die nicht verstanden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr.
Seite 1 von 3  1 23      

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