Discussion:
Fasreport/Ravereports: Variablen übergeben
(zu alt für eine Antwort)
Daniel Seichter
2005-03-29 13:44:57 UTC
Permalink
Hallo,

ich spiele gerade mit Fastreport herum und muss sagen, dass es mir viel
besser gefällt, als RaveReports. Eines habe ich aber noch nicht
herausgefunden:
Wie bekomme ich den Inhalt einer Variable meiner Anwendung in den Report?
Welcher der beiden Reportgeneratoren kann es und vor allem: wie? Bei beiden
kann ich nur Variablen finden, die ich IM Report generiere, aber keine, die
ich aus einer anderen Anwendung heraus zur Verfügung stelle.

Vielen Dank

Daniel Seichter
--
Nachrichten an nospam [at] dseichter.de werden sofort gelöscht!!!
Für E-Mail Kontakt bitte daniel [at] dseichter.de benutzen.
Messages to nospam [at] dseichter.de will deleted immediately!!!
To contact me please use daniel [at] dseichter.de.
Josef Koller
2005-03-29 15:09:45 UTC
Permalink
Hallo,

ich benutze Freerport, ist aber von der Handhabung her das Gleiche. Also,
unter Datei, Variablenliste öffnen. Eine Variable festelegen.

Dann auf der Reportseite ein Memo einfügen. Diesem Memo den Inhalt mit Klick
auf Variable die zuvor definierte Variable zuweisen.

Dann die Reportseite schliessen. Anschließend dem Ereignis frReport1GetValue
folgenden Inhalt zuweisen:

procedure TFFutter.frReport1GetValue(const ParName: String;
var ParValue: Variant);
begin
if AnsiCompareText(ParName,'titel') = 0 then
ParValue:=ffutter.label1.caption;
end;

'titel' ist die Variable und ffutter.label1.caption ist der zu übergebende
Text für diese Variable.ffutter ist das Formular.

Viele Grüße

Josef
Joe Galinke
2005-03-29 15:43:31 UTC
Permalink
Hallo Daniel,
Post by Daniel Seichter
Wie bekomme ich den Inhalt einer Variable meiner Anwendung in den Report?
MyReport.Dictionary.Variables.Variable['MyVar'] :=
QuotedStr(Application.ExeName);

MyVar muss dafür (zumindest FR 2.5x) im Report noch nicht existieren.



Gruß, Joe
--
Ingo Balzer
2005-03-29 15:56:14 UTC
Permalink
Post by Daniel Seichter
Hallo,
ich spiele gerade mit Fastreport herum und muss sagen, dass es mir viel
besser gefällt, als RaveReports. Eines habe ich aber noch nicht
Wie bekomme ich den Inhalt einer Variable meiner Anwendung in den Report?
Welcher der beiden Reportgeneratoren kann es und vor allem: wie? Bei beiden
kann ich nur Variablen finden, die ich IM Report generiere, aber keine, die
ich aus einer anderen Anwendung heraus zur Verfügung stelle.
Das funktioniert z.B. in der Version 2.5 über OnGetValue:

Beispiel:

Im Formular sind eine frUserDataSet- und eine Report-Komponente.
Letztere hat erstere als DataSource.
Im Report wird ein Datenfeld (z.b. ein MemoView) erzeugt mit dem Inhalt
einer userdefinierten Variablen.
Die kann man einfach durch bloßes Aufschreiben im Datenbereich des
MemoView erzeugen.
z.B. [Stueckzahl];
Es wird angenommen, das der Inhalt der Variablen in einer Zelle eines
StringGrids steht.

Dann wird dieser wie folgt in der Anwendung zugeordnet:
procedure TForm1.frReport1GetValue(const ParName: String;
var ParValue: Variant);
begin
if AnsiCompareText(ParName,'Stueckzahl') = 0 then
ParValue:= StringGrid1.Cells[0,frUserDataSet1.RecNo+1];
end;

Ich glaube in der Demo -PrnGrid- ist das ganz gut zu sehen. Wie das in
der Version 3.x aussieht kann ich nicht sagen, da ich mich damit noch
nicht befasst habe.
Ansonsten hat FastReport auch Newsgruppen, falls Du nicht bereits in der
OLH oder den Demos fündig wirst.

Gruß Ingo
Lukas Gradl
2005-03-29 17:25:56 UTC
Permalink
On Tue, 29 Mar 2005 15:44:57 +0200, "Daniel Seichter"
Post by Daniel Seichter
Hallo,
ich spiele gerade mit Fastreport herum und muss sagen, dass es mir viel
besser gefällt, als RaveReports. Eines habe ich aber noch nicht
Wie bekomme ich den Inhalt einer Variable meiner Anwendung in den Report?
Welcher der beiden Reportgeneratoren kann es und vor allem: wie? Bei beiden
kann ich nur Variablen finden, die ich IM Report generiere, aber keine, die
ich aus einer anderen Anwendung heraus zur Verfügung stelle.
Zuerst mit FRReport.Dictionary.Variables die Variablen definieren.
Dabei kann mit einer Variable die mit einem Leerzeichen beginnt, eine
Gruppierung erstellt werden:

frReport.Dictionary.Clear;
with frReport.Dictionary do begin
Variables[' Adresse']:='';
Variables['Name']:='Hintertupfinger Hugo';
Variables['Strasse']:='Straße 1';
Variables['PLZ']:='12345';
Variables['Ort']:='Hintertupfing';
Variables[' Allgemeines']:='';
Variables['Berichtstitel']:='Testbericht';
Variables['Erzeuger']:='';
end;

Die Variablen können damit im Designer zur Laufzeit verwendet werden
ohne sie im Designer vorher definieren zu müssen.

Eine Besonderheit stellt jetzt die Variable "Erzeuger" dar - sie soll
erst zur Laufzeit des Reports definiert werden. Das machst du über das
Ereignis frReport.OnGetValue.
z.B.:
If ParName='Erzeuger' then ParValue:='ICH';

Das hat den Vorteil, daß du z.B. diese Variable öfter in einem Report
verwendest und sie immer einen anderen Wert hat (z.B. Zähler).


Gruß
Luggi
Daniel Seichter
2005-03-30 06:34:38 UTC
Permalink
Guten Morgen,

vielen Dank für die Antworten. Werde im Laufe des Vormittags die Lösungen
mal umsetzen.

Daniel Seichter
--
Nachrichten an nospam [at] dseichter.de werden sofort gelöscht!!!
Für E-Mail Kontakt bitte daniel [at] dseichter.de benutzen.
Messages to nospam [at] dseichter.de will deleted immediately!!!
To contact me please use daniel [at] dseichter.de.
Loading...