LazReport Programmaticly - mehr als eine Datenquelle

Rund um die LCL und andere Komponenten
Antworten
ebizz
Beiträge: 1
Registriert: Fr 4. Mär 2022, 15:05

LazReport Programmaticly - mehr als eine Datenquelle

Beitrag von ebizz »

Moin moin,

ich versuche in einem meiner Klassenobjekte eine Print Funktion via LazReport zu bewerkstelligen, d.h. ich habe kein vorgefertigtes Form, sondern erzeuge sämtliche Komponenten für den Start des Reports manuell im Code. Leider kriege ich es so nicht hin, mehr als eine Datenquelle / Dataset oder Datasource, dem frReport1 zu übergeben. Kennt dort einer einen Trick oder hat einen Tip für mich? Ich brauche für die Reportdaten halt einmal meine Masterdaten und wollte zudem Kopfdaten über einen eigenen Query mit nutzen. Das ganze via Form läuft problemlos, nur nicht "programmatisch".

Code: Alles auswählen

       frReport1.DataType        := TfrDataType.dtDataSet;
       frReport1.DataSet := frDBDataSet_VOUCHER;               // hier würde ich gerne ein Array mit mehr als einem Dataset übergeben

       if frReport1.PrepareReport then
            begin
              frReport1.PrintPreparedReport('',1);
            end;    
Für etwaige Ideen / Hilfestellungen bin ich schon mal im Vorwege dankbar.

PS: Ich habe etwas im Netz gewühlt, ist LazReport jetzt das Produkt was weiter entwickelt wird oder FrReport? Da steigt ja keiner mehr durch was aktuell und was veraltet ist.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5187
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: LazReport Programmaticly - mehr als eine Datenquelle

Beitrag von af0815 »

Wenn, dann musst du ein Dataset an die Komponente zur Laufzeit anbinden. Kein Array von irgendwas. Wenn du ein Array mit Daten hast, so kann man das auch an einen LazReport anbinden, dann allerdings nicht einfach über ein Dataset, sondern über die richtigen Events.

Generell gibt es verschiedene Reportsystem die man mit Lazarus verwenden kann. Siehe auch hier https://forum.lazarus.freepascal.org/in ... ic=45111.0
FrReport kenne ich nicht. fpReport schon, das ist eine spezialisierte Variante mit nur einfachen Datenkonstrukten (ein Dataset per Seite), das ohne LCL auch auf einen Headless Server Reports rendern kann.

Die Frage ist, was du willst und wie deine Daten vorliegen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
gladio
Beiträge: 167
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: LazReport Programmaticly - mehr als eine Datenquelle

Beitrag von gladio »

d.h. ich habe kein vorgefertigtes Form, sondern erzeuge sämtliche Komponenten für den Start des Reports manuell im Code.
Ist das eine Vorgabe oder willst du dich damit selbst bestrafen?

Entwickle doch das Programm erst mal so, dass der Report am Bildschirm erscheint.
Wenn dann alles zu deiner Zufriedenheit funktioniert, ersetzt du das "...report.showreport;" mit "...report.print " oder biete dem Anwender die Möglichkeit zu entscheiden,
ob sofort gedruckt werden soll oder ob eine Bildschirmanzeige reicht.
Noch besser (man druckt neuerdings nicht mehr so viel ) mach ein PDF draus.

Antworten