Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Fastreport Variable auslesen (https://www.delphipraxis.net/200909-fastreport-variable-auslesen.html)

NoName1 6. Jun 2019 08:52

Fastreport Variable auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Tag,
nun benöntige ich nochmals Eure Hilfe.
Ich möchte in Fastreport, nach dem "Showreport Ereignis" den Wert der Variablen "Page" auslesen.
In Fastreport habe ich im Page-Footerband folgendes definiert:
Delphi-Quellcode:
Seite: [<Page> + <startseite> -1]

Für das Auslesen Verwende ich folgendes:
Delphi-Quellcode:
pSeiten := frxReport1.Variables['<Page>'];
Es wird der in der Anlage beschriebene Fehler ausgegeben.
Wenn ich "pSeiten" in eine Intergervariable ändere, wird die gleiche Fehlermeldung ausgegeben,
nur mit dem Inhalt, das nicht in den "Typ (Integer)" konvertiert werden kann.

Wie greift man den Inhalt von Variablen in Fastreport ab?
Vielen Dank für Eure Hilfen im Voraus.

hoika 6. Jun 2019 08:59

AW: Fastreport Variable auslesen
 
Hallo,
laut dem hier ist OnShowReport zu früh

https://www.fast-report.com/en/forum...howtopic=11790

oder dein "<Page>" ist falsch und muss heißen "Page"
siehe auch
https://www.fast-report.com/document...ite_report.htm

NoName1 6. Jun 2019 11:19

AW: Fastreport Variable auslesen
 
danke für die Hinweise,
aber auch diese brachten keine Lösung.
Wo sonst wenn nicht nach dem "OnShowReport"?, frage ich mich.
Irgend wie muss man die Variable doch auslesen können.

hoika 6. Jun 2019 15:27

AW: Fastreport Variable auslesen
 
Hallo,
hast du die <> entfernt?

Was für ein Typ ist denn frxReport.Variables?
Sieht doch fast aus wie eine StringList oder ähnliches,
dann müsste man doch mal alle Variablen auslesen können.
Dann weißt du dann auch, wie deine gewünschte Variable heisst.

Also F5 drücken und mit F7 mal in den Quell-Code von FastReport schauen.

NoName1 7. Jun 2019 10:10

AW: Fastreport Variable auslesen
 
hoika,
habe ich alles versucht.
Ich habe nun mit Fastreport Kontakt aufgenommen. Mal abwarten was ich von FR erfahren werde.

hoika 7. Jun 2019 12:28

AW: Fastreport Variable auslesen
 
Hallo,
nun gut aber

Zitat:

habe ich alles versucht.
Auch mal in den Quellen gesucht, welcher Daten-Typ Variables ist?

Neumann 7. Jun 2019 13:56

AW: Fastreport Variable auslesen
 
Die Variablen sind immer vom Typ Variant. Die werden in Fastreport bei der Reporterstellung entsprechend umgewandelt, etwa in String, Integer usw.

Ist teilweise wenig fehlertolerant, wenn z.B. auf Nullwerte zugegriffen wird wirft er Fehlermeldungen und bricht ab.

Würde mal OnEndDoc versuchen um an den Wert zu kommen

Quitzlinga 7. Jun 2019 15:44

AW: Fastreport Variable auslesen
 
Hi,

das wird alles so nicht funktionieren. Bevor Du eine Variable auslesen kannst, musst Du sie erst einma im Report selbst definieren. Ein einfaches <meinevariable> in einem Label oder anderem rein zu schreiben langt da nicht.

Folgendes Vorgehen hat für mich funktioniert:

1. Aufruf des Reports im Editor-Modus ( mReport.DesignReport( true ) )
2. Anlage eines Variablenverzeichnisses über das Menü Report->Variablen ( zB. "MyVar" )
3. Nun Hinzufügen einer Variablen in MyVar
4. Einfügen der Variable in ein Memo, Label etc per Doppelklick und "[MeineVar]".
5. Speichern des Reports. Nun kann die Variable im Report angesprochen werden.

Nun kannst Du die Variable in Delphi beschreiben oder auslesen.

Delphi-Quellcode:
    mReport.Variables['MeineVar'] := 15;
Alternativ kannst Du die Variable auch so beschreiben

Delphi-Quellcode:
mReport.Variables.AddVariable( 'MyVar', 'MeineVar', 6 );
Das Geheimnis liegt in der vorherigen Deklaration im Report sonst stehen die auch nicht in der Stringliste drin.

MfG

Quitzlinga

[Edit Nachtrag]
der Aufruf des Fastreport-Editors geht nur in der Pro-Version

NoName1 8. Jun 2019 07:31

AW: Fastreport Variable auslesen
 
so, Paul Gursky von FastReport hat geantwortet:
Zitat:

Page is not user defined variable, this is system variable.
Use
frxReport1.EngineOptions.DestroyForms := False;
frxReport1.ShowReport();
ShowMessage(VarToStr(frxReport1.Calc('<Page>')));
Ich habe im Code dann folgendes genommen:
Delphi-Quellcode:
pSeite := StrToInt(frxReport1.Calc('<Page>'));

Es wird die Summe der Seiten korrekt ausgelesen.
Damit ist für mich das Thema beendet.
Vielen Dank an allen für Eure Mühen


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz