Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi FastReport Master / Detail im Report mit TSQL (https://www.delphipraxis.net/169447-fastreport-master-detail-im-report-mit-tsql.html)

rokli 20. Jul 2012 08:32

FastReport Master / Detail im Report mit TSQL
 
Hallo Zusammen!

Seit einiger Zeit knabbere ich nun an einer einfachen Master/Detail bzw. MasterData/DetailData Beziehung. Laut Handbuch FR, wird die Master/Detail auf die TABLLEN im Delphi hergestellt: " ... der Komponente Table2
stellen wir die Eigenschaft MasterSource = DataSource1 ein, dadurch stellen wir die
Verbindung “master-detail” her. ...
".

Ich verwende TSQL, denen ich das Statement erst zur Laufzeit - in Abhängigkeit anderer Daten - generieren kann.

Wie kann ich die Verknüfung zweier Query´s im FR herstellen?
Edit: (also eine Query für den Master und eine Query für das Detail)

Oder liegt es an der im Delphi XE2 integrierten (abgespeckten?) Version von FR (FR 4.12.2)?

Vielen Dank für Eure Hilfe!
Rolf

ensaron 23. Jul 2012 12:54

AW: FastReport Master / Detail im Report mit TSQL
 
Hallo,

vor genau dem Problem stehe ich ebenfalls gerade und erlaube mir daher, dieses Thema wieder etwas nach oben zu schieben :wink:

Ich möchte dem Report zwei DataSets zur Verfügung stellen und die Master-Detail-Verknüpfung erst im Report herstellen.

Kennt jemand dafür eine Möglichkeit?

Grüße
Thomas

Sir Rufo 23. Jul 2012 13:08

AW: FastReport Master / Detail im Report mit TSQL
 
Die Master-Detail-Beziehungen müssen quasi noch vor dem Report erzeugt werden.

Aber wo ist denn das Problem?

jaenicke 23. Jul 2012 13:49

AW: FastReport Master / Detail im Report mit TSQL
 
Dadurch wird ja die Logik aus dem Report heraus verlagert. Das ist eigentlich nicht so sinnvoll, da man diese dann nur schlecht anpassen kann.

Am besten wäre, wenn man nur wissen muss, welche Tabellen der Report benötigt, und diese dann z.B. als ClientDataSet zur Verfügung stellen kann. Der Rest der Logik sollte komplett im Report passieren.
Im Grunde also genau z.B. mit TSQL wie der TE es geschrieben hat.

Lässt sich so etwas mit FastReport nicht machen? :gruebel:

Sir Rufo 23. Jul 2012 13:51

AW: FastReport Master / Detail im Report mit TSQL
 
Da ein Report eine Veranschaulichung von Daten ist, sollte jede Logik zum Zeitpunkt der Report-Erstellung schon abgeschlossen sein.

seifman 23. Jul 2012 13:55

AW: FastReport Master / Detail im Report mit TSQL
 
Schau Dir mal das Event "OnAfterScroll" des Masters an. In diesem musst Du dann deine Detail-Query nach Parameterübergabe öffnen oder besser sogar filtern.

Bei uns haben wir das so gelöst:
Die Detail-Query wurde bereits vorbereitet und enthält einen Parameter "pid", welchen wir für das OnAfterScroll-Event benötigen.

Für die Master-Query haben wir folgenden Event-Handler:
Delphi-Quellcode:
procedure XYZ.AfterScrollMaster(DataSet: TDataSet); //DataSet ist hier die Master-Query
begin
  if ((FDetailQuery <> nil) and (DataSet.FindField('id') <> nil)) then
  begin
    FDetailQuery.Active := false;
    FDetailQuery.ParamByName('pid').AsFloat := DataSet.FieldByName('id').AsFloat;
    FDetailQuery.Active := true;
  end;
end;
Performanter wäre sicherlich die Detail-Query einmalig zu öffnen und dann nur den Filter zu ändern.

Sir Rufo 23. Jul 2012 14:01

AW: FastReport Master / Detail im Report mit TSQL
 
Das ist doch aber wesentlich umständlicher als die MasterDetail-Beziehung gleich zu definieren.

Und flexibel (wiederverwendbar) ist das auch nicht gerade.

seifman 23. Jul 2012 14:25

AW: FastReport Master / Detail im Report mit TSQL
 
Zitat:

Zitat von Sir Rufo (Beitrag 1175675)
Das ist doch aber wesentlich umständlicher als die MasterDetail-Beziehung gleich zu definieren.

Und flexibel (wiederverwendbar) ist das auch nicht gerade.

Da gebe ich Dir Recht. Wollte lediglich eine Lösung aufzeigen, die bei uns an diversen Stellen verwendet wird. Auf die Idee der Detail-Query-Komponente einfach den Master anzugeben bin ich nicht gekommen. Danke für den Hinweis.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 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