AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FastReports Master/Detail Frage

Ein Thema von TurboMagic · begonnen am 27. Jan 2025 · letzter Beitrag vom 2. Feb 2025
Antwort Antwort
Seite 1 von 2  1 2      
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.011 Beiträge
 
Delphi 12 Athens
 
#1

FastReports Master/Detail Frage

  Alt 27. Jan 2025, 20:32
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...
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.385 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: FastReports Master/Detail Frage

  Alt 27. Jan 2025, 20:46
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...
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.011 Beiträge
 
Delphi 12 Athens
 
#3

AW: FastReports Master/Detail Frage

  Alt 27. Jan 2025, 21:26
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
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.385 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: FastReports Master/Detail Frage

  Alt 28. Jan 2025, 06:02

Ok zu den Daten, sowas hier:
dann klar Groupheader und frxDataset. Das geht am einfachsten
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.011 Beiträge
 
Delphi 12 Athens
 
#5

AW: FastReports Master/Detail Frage

  Alt 28. Jan 2025, 12:36
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.
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
604 Beiträge
 
Delphi XE6 Enterprise
 
#6

AW: FastReports Master/Detail Frage

  Alt 28. Jan 2025, 15:54
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.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.011 Beiträge
 
Delphi 12 Athens
 
#7

AW: FastReports Master/Detail Frage

  Alt 28. Jan 2025, 20:18
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?
Grüße
TurboMagic
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
474 Beiträge
 
#8

AW: FastReports Master/Detail Frage

  Alt 28. Jan 2025, 21:42
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
Angehängte Dateien
Dateityp: zip TestFastReportGroup.zip (1,4 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.011 Beiträge
 
Delphi 12 Athens
 
#9

AW: FastReports Master/Detail Frage

  Alt 29. Jan 2025, 19:51
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"
Grüße
TurboMagic
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
474 Beiträge
 
#10

AW: FastReports Master/Detail Frage

  Alt 29. Jan 2025, 21:14
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 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 by Thomas Breitkreuz