![]() |
FastReport ohne Datenbank
Hallo,
mit Delphi 10.4.2 und dem darin enthaltenen FastReport 6 möchte ich meinen ersten Report erstellen. Eine Datenbank ist nicht vorhanden, auch keine Dateien, sondern Daten die im Programm generiert werden, sollen als Report ausgegeben werden. Meinem Verständnis nach geht das mit TfrxUserDataSet, bei dem im Ereignis
Code:
oder
procedure TForm1.TfrxUserDataSet1GetValue(const VarName: string; var Value: Variant);
Code:
programmatisch Value der gewünschte Wert in Abhängigkeit von VarName und der Anzahl wie oft das Ereignis bereits aufgerufen wurde zugewiesen wird.
procedure TForm1.TfrxUserDataSet1NewGetValue(Sender: TObject; const VarName: string; var Value: Variant);
Meine Frage dazu: Gibt es auch eine Möglichkeit die Daten im Vorfeld alle in ein bzw mehrere DataSets zu füllen (ohne extra eine xml Datei oder Datenbank zu erstellen)? Leider gibt es von FastReport keine Samples in der mitgelieferten Version und auch die Hilfe ist zu diesem Thema dürftig. |
AW: FastReport ohne Datenbank
Ich bin kein FastReport-Experte, traue mich aber zu sagen "Ja, die UserDataSets sind der richtige Weg dafür".
Ich persönlich habe die am Schluss trotzdem nie genutzt da mein Anwendungsfall eher war "Mach ein schönes A4-Blatt" statt "Band-Reports mit dynamischer Länge". Ich gehe dann einfach hin, suche mir auf dem Report die Komponenten (Textfelder) mit dem jeweiligen Namen (z.B. clientAddressTextbox), und setze den Inhalt per Code. Das geht natürlich immer |
AW: FastReport ohne Datenbank
![]() MemoryDataSet VirtualDataSet oder wie auch immer ein Hesteller es nennt * Columns erstellen * Dataset aktiv setzen * und dann viele Insert+Post, bis voll |
AW: FastReport ohne Datenbank
Zitat:
Zitat:
|
AW: FastReport ohne Datenbank
Ich bin ebenfalls kein Experte, kann aber Günther in seiner Meinung nur bestätigen. Ich hoffe dir hilft es. Du kannst von weiteren Fortschritten gerne berichten.
Liebe Grüße |
AW: FastReport ohne Datenbank
Ich hab das mit einer StingList() mal so gemacht
Delphi-Quellcode:
TYPE
Tfrm_Main = class(TForm) ... frxReport1: TfrxReport; StringDS: TfrxUserDataSet; PROCEDURE Tfrm_Main.frxReport1GetValue( CONST VarName: STRING; VAR Value: Variant ); BEGIN IF CompareText( VarName, 'element' ) = 0 THEN Value := sl[StringDS.RecNo]; END; Procedure.... ..... Screen.Cursor := crSQLWait; TRY BEGIN StringDS.RangeEnd := reCount; StringDS.RangeEndCount := sl.Count; frxReport1.ShowReport; END; FINALLY Screen.Cursor := crDefault; END; Edit: Das ist in der Demo von FastReport auch so beschrieben (...FastReport6\Demos\PrintStringList\) |
AW: FastReport ohne Datenbank
Wo werden denn hier die Daten in das UserDataset geschrieben?
|
AW: FastReport ohne Datenbank
@TurboMagic,
Danke für den Hinweis! :thumb: Ich hatte das Event GetValue() vom frxReport1 ganz vergessen. Habe das in meinem Code-Ausschnitt ergänzt. |
AW: FastReport ohne Datenbank
Danke für die Hinweise, vielleicht bleibe ich dann doch erstmal beim frxUserDataSet. Bis auf Bilder in Bands (also Zuweisung des Bildes über Ereignis OnGetBlobValue) klappt das so auch.
Aber aktuell reicht mir auch die Zuweisung einzelner Bilder. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:38 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