Autor Beitrag
TiloS
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 21.05.08 12:13 
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]
ausblenden Delphi-Quelltext
1:
2:
var
PersID : String;


[procedure HeaderBeforePrint]
ausblenden Delphi-Quelltext
1:
PersID := Form1.PersID;           //(Form1 wird nicht erkannt)					


im Formular:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 09.06.08 14:45 
baka0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Mo 09.06.08 14:58 
Ich würd's mal hier versuchen, da sollte dir geholfen werden.

Du kannst natürlich manuell 'ne Datapipeline mit rein geben oder eine "pass through" Funktion verwenden.
TiloS Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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:
ausblenden Quelltext
1:
ppReport1.Parameters.Add('Param_PersID','test');					


Und im Report so zuweisen:
ausblenden Quelltext
1:
PersID := Report.Parameters['Param_PersID'];					
alphaville
Hält's aus hier
Beiträge: 2

XP 32 & 64 Bit
Delphi 6
BeitragVerfasst: 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

ausblenden 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