Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   FastReports Master/Detail Frage (https://www.delphipraxis.net/216611-fastreports-master-detail-frage.html)

TurboMagic 27. Jan 2025 20:32

FastReports Master/Detail Frage
 
Hallo,

in einem Fast Reports Report brauche ich eine Master/Detail Darstellung.
Das Handbuch beschreibt scheinbar nur wie das mit TTable Komponenten im Hintergrund geht.

Geht das auch mit frxUserDatasets? Ich hätte meine Daten schon als 1-stufige Liste im Speicher.
Oder wie funktioniert sowas alternativ mit TFDQuery von FireDAC?

Alternativ könnte ich natürlich meine Query umbauen auf 2 TFDQuerys...

Lemmy 27. Jan 2025 20:46

AW: FastReports Master/Detail Frage
 
naja, setze TTable mit frxUserdataset gleich und fertig ist dein Master-Detail. Du brauchst halt die Daten in Master-Detail aufgeteilt und musst dafür sorgen, dass beim Wechsel des MAster-Datensatz, die Clientdatensätze entsprechend zurückgeliefert werden.
Alternativ kannst Du auch mit Gruppen arbeiten (GroupHeader) aber was genaues kann man nur sagen, wenn du was über deine Datenstruktur erzählst...

TurboMagic 27. Jan 2025 21:26

AW: FastReports Master/Detail Frage
 
Hallo,

GroupHeader klingt interessant!

Ok zu den Daten, sowas hier:

Kategorie, Prozentsatz, Menge

Kat1, 10%, 123
Kat1, 20%, 456
Kat1, 50%, 546
Kat2, 10%, 676
Kat2, 20%, 154
Kat2, 50%, 76

Darstellung soll sein:
Kat1
10% 123
20% 456
50% 546
Kat2
10% 676
20% 154
50% 76

Lemmy 28. Jan 2025 06:02

AW: FastReports Master/Detail Frage
 
Zitat:

Zitat von TurboMagic (Beitrag 1545676)

Ok zu den Daten, sowas hier:

dann klar Groupheader und frxDataset. Das geht am einfachsten

TurboMagic 28. Jan 2025 12:36

AW: FastReports Master/Detail Frage
 
Hallo,

ich dachte das hätte ich bereits versucht, aber scheinbar nicht korrekt.
Kannst du mir da evtl. nochmal kurz die Vorgehenswiese skizzieren?

Dann rolle ich meine Reportdefinition auf das zurück.

Frickler 28. Jan 2025 15:54

AW: FastReports Master/Detail Frage
 
Mit dem Reportdesigner oder per Code erzeugt?

Weil mit dem Designer ist es einfach: Groupheader erstellen, DataSet und Feld ("Kategorie") rein. In das Gruppenband ein Textfeld, auch mit der Kategorie. Masterband rein, an das gleiche DataSet binden, restliche Felder reinsetzen, fertig.

TurboMagic 28. Jan 2025 20:18

AW: FastReports Master/Detail Frage
 
Hallo,

komme immer noch nicht ganz klar. Habe das jetzt auf den Stand zurückgesetzt und
im Designer folgendes vorliegen:

1. Habe einen GroupHeader. Der hat als Bedingung ein frxUserDataSet drin und da ein Feld einer Struktur -> Kategorie

2. Ich habe ein TfrxMasterData das hat als Dataset dasselbe frxUserDataSetVat drin. Ein Feld kann ich da nicht angeben.
Da meckert FastReports.

3. Ich hab' mehrere Textfelder in diesem TfrxMasterData. Jedem hab' ich jetzt dasselbe frxUserDataSet zugewiesen.

4. Es gibt im Code ein Event OnGetValue. Dort hole ich die Daten aus meiner Datenstruktur

Delphi-Quellcode:
  if CompareText(VarName, 'Group."Kategorie"') = 0 then
  // Breakpoint auf der nächsten Zeile
    Value := FData.KategorieData[dm.frxUserDataSet.RecNo].Kategorie;

  if CompareText(VarName, 'Group."PROZENTSATZ"') = 0 then
      Value := CurrToStrF(FData.KategorieData[dm.frxUserDataSet.RecNo].Percentage,
                          ffFixed, 2)
Zur Laufzeit wird der Breakpoint nur 1x statt 2x aufgerufen, aber 2 Zeilen mit dem selben Prozentsatz (aber anderen sonstigen Daten) ausgegeben. Er wechselt also beim GroupHeader nicht weiter.

Warum?

mytbo 28. Jan 2025 21:42

AW: FastReports Master/Detail Frage
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mit der Anwendung aus diesem Artikel und der Projektdatei im Anhang wird das Gewünschte dargestellt. Unter Projects ein neues Verzeichnis anlegen und die ZIP-Datei dorthin entpacken.

Bis bald...
Thomas

TurboMagic 29. Jan 2025 19:51

AW: FastReports Master/Detail Frage
 
Hallo,

habe mal versucht deine Antwort bzw. den anderen Artikel zu kapieren.
Bin jedoch gescheitert.

Ich vermute, dass mir nur eine Kleinigkeit fehlt:
Bisher ist es so, dass im OnGetValue(const VarName: string; var Value: Variant);
der VarName des im GroupHeader auszugebenden Datums nur 1x an OnGetValue übergeben wird.

Das MasterData Band direkt darunter hat das frxUserDataSet und weiß irgendwie nicht,
anhand welchem Kriterium es entscheiden soll wo der nächste GroupHeader einzuschieben ist.
Daher listet es alle seine Einträge unter dem einen GroupHeader.

=> wie sage ich es dem UserDataSet bzw. dem MasterBand wo eine neue Gruppe beginnt?
In der Condition des GroupHeaders hab' ich doch genau das eingetragen, oder nicht?

frxUserDataSetKategorien."Kategorie"

mytbo 29. Jan 2025 21:14

AW: FastReports Master/Detail Frage
 
Zitat:

Zitat von TurboMagic (Beitrag 1545758)
habe mal versucht deine Antwort bzw. den anderen Artikel zu kapieren.
Bin jedoch gescheitert.

Im letzten Kommentar zum Artikel verlinke ich auf einen Post, der die Erstellung eines Berichts per Quelltext zeigt.

Der Report ist in der Anwendung zum Artikel mit wenigen Klicks erstellt. Lege ein neues Projekt an. Kopiere data.json aus meiner ZIP-Datei in das neue Projektverzeichnis. Öffne den Designer. Im Designer unter Report/Daten aktivierst du den DataSet. Danach ziehst du ein GroupHeader, MasterData und GroupFooter Band in den Report. Klickst doppelt auf den GroupHeader und im Dialog wählst du das Datenfeld für die Gruppierung aus. Klickst doppelt auf das MasterData Band und im Dialog markierst du den DataSet. Im Anschluss ziehst du aus dem Datenbaum per Drag&Drop die Felder in die Bänder. Das Feld Kategorie in den GroupHeader, Prozentsatz und Menge in das MasterData Band. Ein wenig aufhübschen und das war es schon. Probiere es einfach aus.

Bis bald...
Thomas


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr.
Seite 1 von 2  1 2      

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