Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - ReportBuilder Digital Metaphors 10.07 - Variablen zuweisen


TiloS - Mi 21.05.08 12:13
Titel: ReportBuilder Digital Metaphors 10.07 - Variablen zuweisen
Hallo,

ich möchte während des Report-Druckes in den einzelnen Bändern Berechnungen durchführen, und zwar mit Werten aus einem vorherigem Formular.
Dazu muss ich erstmal im ReportBuilder unter Berechnungen - Global - Deklarationen - Variables die Variablen anlegen. Wie kann ich aber jetzt diesen Variablen Werte aus dem Report-Formular oder anderen Formularen zuweisen?

im ReportBuilder:
[Variables]

Delphi-Quelltext
1:
2:
var
PersID : String;


[procedure HeaderBeforePrint]

Delphi-Quelltext
1:
PersID := Form1.PersID;           //(Form1 wird nicht erkannt)                    


im Formular:

Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.LeistungenBerichteBarItemClick(Sender: TObject);
begin
  ppReport1.PersID := 'abc';      //(PersID wird nicht erkannt)
end;


Wie kann ich Werte aus dem Formular in den ReportBuilder übergeben?

Moderiert von user profile iconUGrohne: Beitragsformatierung überarbeitet.


baka0815 - Mi 21.05.08 12:21

Du kannst im ReportBuilder mit RAP nicht einfach so auf deine eigenen Forms zugreifen und wirst ihm wohl "von aussen", also aus deinem Formular, die Werte übergeben müssen.


TiloS - Mi 21.05.08 12:34

Danke,

von außen sehe ich aber die Variablen im ReportBuilder nicht, zumindest habe ich nichts gefunden. Oder gibt es da eine Komponente des ppReport1 mit der ich auf die Variablen zugreifen kann?


TiloS - Mo 09.06.08 14:33

Ich muss leider nochmal hierauf zurückkommen.

Ich kann im Formular weder auf eine Variable des Reports noch auf ein Feld des Reports zugreifen, also kann ich im Formular auch nichts initialisieren, was den Report betrifft.

Wenn ich im Formular eine im Formular deklarierte Variable initialisiere, kann ich wiederum im Report nicht auf sie zugreifen.

Das Einzige was ich mir denken könnte, wäre vom Formular aus die Verwendung der "Parameters"-Funktionen der Report-Komponente:

Quelltext
1:
2:
ppReport1.Parameters.Add('Param_PersID','test');
ppReport1.InitializeParameters;

Nur wie es scheint, funktioniert das auch nicht. Ich finde im Report nichts wo ich dann auf diese Parameter zugreifen könnte.

Hat noch jemand eine Idee?

Gruß
Tilo


Xentar - Mo 09.06.08 14:45

Crosspost...
http://forum.delphi-treff.de/showthread.php?t=23779


baka0815 - Mo 09.06.08 14:58

Ich würd's mal hier [http://delphi.newswhat.com/geoxml/forumlistthreads?groupname=digital-metaphors.public.reportbuilder.general] versuchen, da sollte dir geholfen werden.

Du kannst natürlich manuell 'ne Datapipeline mit rein geben oder eine "pass through" Funktion verwenden.


TiloS - Mo 09.06.08 15:42

So jetzt hab ich's endlich.

Das Problem war, dass die Syntax des Zugriffs auf den Report im Report anders ist als im Formular.

Also Parameter im Formular übergeben:

Quelltext
1:
ppReport1.Parameters.Add('Param_PersID','test');                    


Und im Report so zuweisen:

Quelltext
1:
PersID := Report.Parameters['Param_PersID'];                    


alphaville - Mi 11.06.08 09:10

Hi TiloS,

ich hab das anders herum gelöst. Ich habe mir im Report die Variablen definiert und frage das in Delphi ab.
Dazu benutzt ich die TCommunicater Komponente. Mit der kann man dann die Variable im Report suchen.
Das Ganze erfolgt z.B. im ppGroupFooterBand1AfterGenerate


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Communicater[1] := ppReport10.FindUserObject('Variable5');
Communicater[2] := ppReport10.FindUserObject('Variable6');
if ((Communicater[1]<>nil) and (Communicater[2]<>nil)) then begin
  Variable[1] := TppVariable(Communicater[1]);
  Variable[2] := TppVariable(Communicater[2]);

  if (realAnwesenheit=0) then begin
    Variable[1].AsFloat := 0;
  end else begin
    Variable[1].AsFloat := 100 * realCoupon / realAnwesenheit;
  end;
end;


Gruß Uwe