Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi FastReport und frxUserDataSet Problem (https://www.delphipraxis.net/186634-fastreport-und-frxuserdataset-problem.html)

Wirtz 18. Sep 2015 08:45

FastReport und frxUserDataSet Problem
 
Hallo zusammen,

kann mir vielleicht jemand sagen, warum das OnGetValue Ereigniss der frxUserDataSet-Komponente immer zweimal ausgeführt wird?
Es fällt mir gerade schwer das Problem eindeutig zu schildern daher folgend ein Beispiel:

Aufruf des Reports:
Delphi-Quellcode:
  frxReportAusdruck.LoadFromFile(Report+'\FRAusdruck.fr3');
  frxUserDataSet1.Tag:= 0;
  frxReportAusdruck.PrepareReport();
  frxReportAusdruck.ShowPreparedReport;

Delphi-Quellcode:
procedure TfrmAusdruck.frxUserDataSet1CheckEOF(Sender: TObject;
  var Eof: Boolean);
begin
  Eof:= frxUserDataSet1.Tag = frmPuffer.lvPuffer.Items.Count;
end;

procedure TfrmAusdruck.frxUserDataSet1First(Sender: TObject);
begin
frxUserDataSet1.Tag := 0;
end;

procedure TfrmAusdruck.frxUserDataSet1GetValue(const VarName: string;
  var Value: Variant);
begin
  if VarName = 'XY' then begin
       Value := strXY;
    end
    else if VarName = 'FA' then
        Value := strFA
    else if VarName = 'Titel' then
        Value := strFRTitel
    else if VarName = 'Anlage' then
    ...    
end;

procedure TfrmAusdruck.frxUserDataSet1Next(Sender: TObject);
begin
  frxUserDataSet1.Tag:= frxUserDataSet1.Tag + 1;
end;
Der Report wird korrekt Angezeigt, aber die Procedure TfrmAusdruck.frxUserDataSet1GetValue wird zweimal ausgeführt. Das heißt, jeder VarName wird zweimal aufgerufen und beschrieben.

Hat vielleicht jemand eine Idee für mich woran das liegen könnte?

Vielen Dank

Lemmy 18. Sep 2015 08:47

AW: FastReport und frxUserDataSet Problem
 
weil Du mehr als einen Datensatz hast?

Nersgatt 18. Sep 2015 08:50

AW: FastReport und frxUserDataSet Problem
 
Ich könnte mir vorstellen, dass es an der Double Pass-Option liegt. Ist aber nur ne Vermutung.

Wirtz 18. Sep 2015 09:36

AW: FastReport und frxUserDataSet Problem
 
Ok. Viel geschrieben und die Aussage noch nicht treffend formuliert von mir.

Ja ich habe mehrere Datensätze aber in einem Datensatz wird der VarName zweimal aufgerufen und beschrieben.

Beispiel:
1234
2345
3456

jetzt wird bei Datensatz 1234 zweimal Value:= 'XY' und so weiter aufgerufen.

Double Pass-Option? sagt mir leider nichts.

Nersgatt 18. Sep 2015 09:44

AW: FastReport und frxUserDataSet Problem
 
Im Reportdesigner kannst Du in den Optionen für den Report irgendwo einen Haken "Double Pass" (ich glaub, ist auf Deutsch mit "Zweipass" übersetzt) setzen.

Einige Report-Funktionen benötigen diese Option. Dabei wird der Report praktisch 2x generiert. Wenn Du z.B. eine Seitennummerierung haben willst "Seite 1/10", dann wird im ersten Durchgang ermittelt, wie viele Seiten der Report insgesamt hat und im 2. Durchgang wird dann der Report mit der richtigen Gesamtseitenzahl generiert. Daher könnte ich mir vorstellen, dass mit dieser Option auch das GetValue-Event 2x aufgerufen wird.

Wirtz 18. Sep 2015 10:06

AW: FastReport und frxUserDataSet Problem
 
Also an der DoublePass-Option lag es nicht. Stand schon auf False.
Aber auch mit True und nochmals False schalten liegt der Fehler weiterhin vor.

Danke führ den Hinweis

MrSpock 18. Sep 2015 10:13

AW: FastReport und frxUserDataSet Problem
 
Könnte es daran liegen, dass du den Report zunächst "vorbeitest" mit Prepare und dann anzeigst?

Wirtz 18. Sep 2015 10:57

AW: FastReport und frxUserDataSet Problem
 
Daran hatte ich auch schon gedacht, ist allerdings nicht der Fall.
Ohne das PrepareReport wird nichts angezeigt und ShowPreparedReport durch ShowReport ersetzt zeigt nur eine Art abgespeckten Report an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 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