![]() |
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 |
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 |
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? |
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: |
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.
|
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:
Performanter wäre sicherlich die Detail-Query einmalig zu öffnen und dann nur den Filter zu ändern.
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; |
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. |
AW: FastReport Master / Detail im Report mit TSQL
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 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-2025 by Thomas Breitkreuz