LazReport Designer speichert Reports in Datenbank

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
LazarusFuchs
Beiträge: 25
Registriert: Mo 19. Aug 2013, 22:28
OS, Lazarus, FPC: Windows 11 24H2 (Lazarus 4.0 FPC 3.2.0)
CPU-Target: 64Bit
Wohnort: Österreich
Kontaktdaten:

LazReport Designer speichert Reports in Datenbank

Beitrag von LazarusFuchs »

Habe den Lazreport Designer um die Möglichkeit erweitert Reports in einer Datenbank(tabelle) zu speichern. Dazu hat der Designer ein paar Properties mehr bekommen.

Die Beschreibung ist als PDF verfügbar und wird hier angehängt. Wer Interesse an der Möglichkeit hat bitte die PDF-Datei herunterladen und lesen.

Wie bei mir üblich ist die Datenbankanbindung mit embedded Firebird - braucht deshalb nicht installiert zu sein/werden- und ZEOS (muss vom Online Package Manager installiert werden). Ich arbeite mit dieser Kombination und bin sehr zufrieden damit. Die immer wieder kommenden Kommentare warum ich das so mache und nicht anders bitte sparen, ist Zeitverschwendung. Ich mache das eben so. Ich werde mich damit nicht mehr beschäftigen. Wie man eine Datenbank im Programm erstellt wird auch noch als kompakter Sourcecode mitgeliefert aber nicht weiter kommentiert.

Der Download der neuen Reportkomponente nebst Beschreibung und Beispielprogramm kann auf dieser Seite gestartet werden:
https://lazarus.intern.ws/lazreport_des ... abase.html

Die deutsche PDF.Datei bzw. Beschreibung ist diesem Thema angehängt und nicht hier integriert, um den Beitrag nicht zu lange werden lassen.

Anregungen zur Gestaltung und Abrundung des Designers werden gerne entgegengenommen.

Die PDF-Datei mit der Deutschen Beschreibung im Anhang:
Dateianhänge
LazReport Reports mittels Datenbank speichern German.pdf
(541.44 KiB) 187-mal heruntergeladen
„Je mehr ich weiß, desto mehr wird mir klar, dass ich nichts weiß“
https://lazarus.intern.es

charlytango
Beiträge: 1139
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: LazReport Designer speichert Reports in Datenbank

Beitrag von charlytango »

Meine Meinung zu Firebird in Beispielen ist hinlänglich bekannt und darum soll es auch nciht gehen.

Ich bin ein Fan von der Idee Reportdefinitionen in Datenbanken abzulegen, das würde die Netzwerkfähigkeit erhöhen. Durchaus ein spannende und solide Arbeit.

Wohingegen ich gar kein Fan bin ist die Art der Umsetzung.
Die Idee bei jeder Lazarus-Installation manuell die beiden Dateien für den kompletten Designer über die anderen Dateien drüber kopieren zu müssen halte ich nicht für nachhaltig.
Alle anderen Erweiterungen für LazReport werden in Packages angeboten und das ist ja auch das Konzept von Lazarus.

Wenn man in den Source rein sieht, war schon einiges an Code nötig um LazReport zur Mitarbeit zu bewegen. Mein Wissen reicht da nicht aus um abschätzen zu können ob man das in ein Package unterbringen kann und falls ja, wie.

Aber vielleicht liest auch der Maintainer von LazReport mit und hat Lust die Erweiterung direkt in den Designer einzubauen oder zumindest so vorzubereiten dass ein Package möglich ist ??

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

Re: LazReport Designer speichert Reports in Datenbank

Beitrag von af0815 »

charlytango hat geschrieben: Mi 30. Jul 2025, 14:09 Aber vielleicht liest auch der Maintainer von LazReport mit und hat Lust die Erweiterung direkt in den Designer einzubauen oder zumindest so vorzubereiten dass ein Package möglich ist ??
Im englischen Forum ist die Wahrscheinlichkeit höher. Ausserdem könnte man es als Patch für ein Feature einreichen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Soner
Beiträge: 751
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: LazReport Designer speichert Reports in Datenbank

Beitrag von Soner »

af0815 hat geschrieben: Mi 30. Jul 2025, 15:01
charlytango hat geschrieben: Mi 30. Jul 2025, 14:09 Aber vielleicht liest auch der Maintainer von LazReport mit und hat Lust die Erweiterung direkt in den Designer einzubauen oder zumindest so vorzubereiten dass ein Package möglich ist ??
Im englischen Forum ist die Wahrscheinlichkeit höher. Ausserdem könnte man es als Patch für ein Feature einreichen.
Ich glaube, der Weg ist noch zu kompliziert für den Patch.
Ich speichere auch Reports in DB, arbeite auch mit ZEOS und Firebird, aber runtime.
Ich habe damals Gedanken gemacht so etwas automatisch zu machen.
Dann wollte ich zu TfrReport nur eine ReportStore-Eigenschaft hinzufügen und wenn TfrReport.StoreInform false ist und TfrReport.ReportStore zu gewiesen ist, dann wollte TfrReport etwa mit TfrReport.ReportStore.SaveAsStream(...) Report speichern.
Das auslagern von irgendwelche Eigenschaften oder Datenbankfunktionen ein einer externe Komponente(TReportStore) würde die wichtigste Komponente TfrReport und den Designer schlank und sauber halten.

Soner
Beiträge: 751
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: LazReport Designer speichert Reports in Datenbank

Beitrag von Soner »

Ich habe gerade nochmal überlegt, sein Weg ist noch einfacher. Man braucht keine Extra-Komponente, man braucht nur DataSource und DataField.

charlytango
Beiträge: 1139
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: LazReport Designer speichert Reports in Datenbank

Beitrag von charlytango »

af0815 hat geschrieben: Mi 30. Jul 2025, 15:01
charlytango hat geschrieben: Mi 30. Jul 2025, 14:09 Aber vielleicht liest auch der Maintainer von LazReport mit und hat Lust die Erweiterung direkt in den Designer einzubauen oder zumindest so vorzubereiten dass ein Package möglich ist ??
Im englischen Forum ist die Wahrscheinlichkeit höher. Ausserdem könnte man es als Patch für ein Feature einreichen.
ich habe den Beitrag von @LazarusFuchs auch im englischen Forum kommentiert, aber scheinbar gibt es da wenig Echo.

charlytango
Beiträge: 1139
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: LazReport Designer speichert Reports in Datenbank

Beitrag von charlytango »

Soner hat geschrieben: Mi 30. Jul 2025, 21:47 Ich habe gerade nochmal überlegt, sein Weg ist noch einfacher. Man braucht keine Extra-Komponente, man braucht nur DataSource und DataField.
Ach ok, dann liege ich vielleicht falsch mit dem zusätzlichen Package -- Aber die Idee ist gut und es wäre schade wenn die auf halber Strecke liegen bliebe

Weiß @paweld vielleicht an wen man sich wenden muss bzw wer der aktuelle Maintainer von LazReport ist?

wp_xyz
Beiträge: 5241
Registriert: Fr 8. Apr 2011, 09:01

Re: LazReport Designer speichert Reports in Datenbank

Beitrag von wp_xyz »

LazReport wurde geschrieben von Jesus Reyes, er hat im März die letzten Commits gemacht, scheint also noch aktiv zu sein. Nicht 100% sicher (aber ziemlich), er scheint user "jesusr" im internationalen Forum zu sein; du kannst ihn dort per PN direkt kontaktieren. Am erfolgversprechendsten wäre es natürlich, wenn du gleich einen Patch erstellst.

Benutzeravatar
LazarusFuchs
Beiträge: 25
Registriert: Mo 19. Aug 2013, 22:28
OS, Lazarus, FPC: Windows 11 24H2 (Lazarus 4.0 FPC 3.2.0)
CPU-Target: 64Bit
Wohnort: Österreich
Kontaktdaten:

Re: LazReport Designer speichert Reports in Datenbank

Beitrag von LazarusFuchs »

Habe Jesus eineMitteilung geschickt. Mal sehen, was herauskommt. Möglicherweise übernimmt er das in die aktuelle Version. Ansonsten werde ich noch überlegen wie man das verbessern kann. Auf jeden Fall muss die Möglichkeit verschiedene Sprachen zu bedienen eingebaut werden.
„Je mehr ich weiß, desto mehr wird mir klar, dass ich nichts weiß“
https://lazarus.intern.es

Benutzeravatar
LazarusFuchs
Beiträge: 25
Registriert: Mo 19. Aug 2013, 22:28
OS, Lazarus, FPC: Windows 11 24H2 (Lazarus 4.0 FPC 3.2.0)
CPU-Target: 64Bit
Wohnort: Österreich
Kontaktdaten:

Re: LazReport Designer speichert Reports in Datenbank

Beitrag von LazarusFuchs »

"Das auslagern von irgendwelche Eigenschaften oder Datenbankfunktionen ein einer externe Komponente(TReportStore) würde die wichtigste Komponente TfrReport und den Designer schlank und sauber halten." Das stimmt absolut, aber dann muss diese Komponente auch dementsprechend aufgebaut sein und nicht mit anderen Komponenten verbandelt.

Außerdem wurden an TfrReport keine Änderungen durchgeführt. Ich habe darauf geachtet, dass ausschließlich in der Designer Komponente Änderungen durchgeführt wurden.

Da ich keine Rückmeldung von Jesus bekommen habe, habe ich mich jetzt fast einen Tag damit auseinandergesetzt wie der DBDesigner als eigenständige Komponente eingefügt werden kann. Ist meiner Meinung nach fast unmöglich - vor allem mit vertretbaren Aufwand - meiner Ansicht nach. Da müsste man so viel aufdröseln und an vielen Komponenten Änderungen durchführen. Siehe alleine die uses:

Suche "LR_Desgn" (12 Treffer in 12 Dateien von 67 gesucht)
R:\Lazarus\components\lazreport\source\lazreport.pas (1 Treffer)
Zeile 11: LR_About, LR_BarC, LR_BndEd, LR_Class, LR_Const, LR_DBSet, LR_Desgn,
R:\Lazarus\components\lazreport\source\lr_btyp.pas (1 Treffer)
Zeile 49: uses LR_Desgn, LR_DBDesgn;
R:\Lazarus\components\lazreport\source\lr_desgn.pas (1 Treffer)
Zeile 10: unit LR_Desgn, LR_DBDesgn;
R:\Lazarus\components\lazreport\source\lr_desgn_Fehler.pas (1 Treffer)
Zeile 11: unit LR_Desgn, LR_DBDesgn;
R:\Lazarus\components\lazreport\source\lr_design_ins_filed.pas (1 Treffer)
Zeile 60: uses LR_Utils, LR_Class, LR_DBRel, LR_Desgn, LR_DBDesgn, LR_Const;
R:\Lazarus\components\lazreport\source\lr_edit.pas (1 Treffer)
Zeile 78: uses LR_Desgn, LR_DBDesgn, LR_Fmted, LR_Var, LR_Flds, LR_Const, lr_expres, strutils;
R:\Lazarus\components\lazreport\source\lr_gedit.pas (1 Treffer)
Zeile 56: uses LR_Class, LR_Desgn, LR_DBDesgn;
R:\Lazarus\components\lazreport\source\lr_hilit.pas (1 Treffer)
Zeile 60: uses LR_Desgn, LR_DBDesgn, LR_Class;
R:\Lazarus\components\lazreport\source\lr_newrp.pas (1 Treffer)
Zeile 48: uses LR_Class, LR_Desgn, LR_DBDesgn;
R:\Lazarus\components\lazreport\source\lr_register.pas (1 Treffer)
Zeile 11: LR_Desgn,
R:\Lazarus\components\lazreport\source\lr_view.pas (1 Treffer)
Zeile 746: // see lr_desgn.pas:TfrDesignerForm.SaveState;
R:\Lazarus\components\lazreport\source\_lr_desgn.pas (1 Treffer)
Zeile 11: unit LR_Desgn;

Alleine diese Abhängigkeiten machen eine eigene Komponente ziemlich obsolet. Ich habe die Designer Komponente noch ein bisschen zusammengeräumt und den dort verwendeten Text als
. resourcestring
definiert damit verschiedene Sprachen verwendet werden können. Ich werde die nächsten Tage die nachbearbeitete Komponente auf der Seite
. https://lazarus.intern.ws/lazreport_des ... abase.html
zur Verfügung stellen. Für mich ist das Thema eigene Komponente abgeschlossen.

Sooo viel Aufwand ist das auch wieder nicht die zwei Dateien in den Source-Ordner einzufügen. Ich habe 4 Änderungen die ich bei jedem Versionswechsel in den Komponenten mache. Ich habe das für mich dokumentiert und das dauert höchstens 6 bis 7 Minuten das zu bewerkstelligen. Jetzt sind es halt 2 Minuten mehr.

Und vielleicht kommt jemand auf die Idee die Komponente in dieser Form als Standardkomponente einzubinden. Es spricht alles dafür. So viel mehr Code hat die Komponente auch nicht.
lr_desgn.lfm: etwa 0 Byte
lr_desgn.pas: etwa 12 KByte

Sollte jemand mehr Erfahrung mit Komponenten haben und einen Weg für eine eigene Komponente finden wäre das super.

Wenn jemand weiß wie man das einreicht kann er das gerne tun. Ich habe so etwas noch nicht gemacht und habe keine weitere Zeit dafür.

Patch erstellen - die Anleitung gelesen - Puh.
Vielleicht hat jemand der das hier liest das fertig eingerichtet dann würde ich bitten einen Patch zu erstellen und abzusenden.

Anmerkung: SubReports habe ich (noch) nicht behandelt.
„Je mehr ich weiß, desto mehr wird mir klar, dass ich nichts weiß“
https://lazarus.intern.es

charlytango
Beiträge: 1139
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: LazReport Designer speichert Reports in Datenbank

Beitrag von charlytango »

Habe heute von jesusr im engl Forum Antwort bekommen. Scheinbar sieht er sich das an

Soner
Beiträge: 751
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: LazReport Designer speichert Reports in Datenbank

Beitrag von Soner »

Macht dafür noch kein Patch.

Ich habe das ganze nochmal angeschaut und ich glaube, dass ich einfacheren weg gefunden habe.
Ich veröffentliche meinen Weg Wochenende.

Antworten