Einzelnen Beitrag anzeigen

Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Grds. Frage zum Rave-Report

  Alt 6. Nov 2005, 23:15
So, bin weiter und hab von alleine die CustomConnection gewählt, da sie gerade in meinem Fall doch einige Vorteile bringt, ABER...

Der Report funktioniert leider nur einmal beim Aufruf aus der Anwendung. Beim nächsten Aufruf ist der Report leer.

Wie gesagt, arbeite ich mit Daten aus VirtualStringTrees und zwar in der Form:

Delphi-Quellcode:
procedure TFProjektbericht.RVCERLOESEGetCols(Connection: TRvCustomConnection);
begin
    Connection.WriteField('_KEART', dtString,30,'KostenErlösart','');
    Connection.WriteField('_PLAN', dtcurrency,10,'Planwert','');
    Connection.WriteField('_ISTKUMGES', dtcurrency,10,'IstKumuliert','');
    Connection.WriteField('_PROGENDEPROJEKT', dtCurrency,10,'PrognoseEndeProjekt','');
    Connection.WriteField('_DIFFPROGIST', dtCurrency,10,'DiffPrognoseIst','');
    Connection.WriteField('_DIFFPROGPLAN', dtCurrency,10,'DIFFPrognosePlan','');
end;

procedure TFProjektbericht.RVCERLOESEGetRow(Connection: TRvCustomConnection);
var
  myData: PSDErloese;
begin
    myData := PSDErloese(VTSERLOESE.GetNodeData(myRepNode)); // Daten aus dem VirtualStringTree-Knoten holen
    Connection.WriteStrData(myData.FBezeichnung,'');
    Connection.WriteCurrData(format('%.0n', [myData.FPlan]),myData.FPlan);
    Connection.WriteCurrData(format('%.0n', [myData.FIstKumGesamt]),myData.FIstKumGesamt);
    Connection.WriteCurrData(format('%.0n', [myData.FPrognoseEndeProjekt]),myData.FPrognoseEndeProjekt);
    Connection.WriteCurrData(format('%.0n', [myData.FDiffPrognoseIst]),myData.FDiffPrognoseIst);
    Connection.WriteCurrData(format('%.0n', [myData.FDiffPlanIst]),myData.FDiffPlanIst);
    myRepNode:=VTSERLOESE.GetNext(myRepNode); // einen Knoten weitergehen
end;

procedure TFProjektbericht.RVCERLOESEOpen(Connection: TRvCustomConnection);
begin
    Connection.DataRows:=9;
end;

procedure TFProjektbericht.RVCERLOESEFirst(Connection: TRvCustomConnection);
begin
     myRepNode:=VTSERLOESE.GetFirst; // Node des ersten Knoten des VirtualStringTrees holen
end;
Aufgerufen wird der Report mit:

Delphi-Quellcode:
procedure TFProjektbericht.TBItem1Click(Sender: TObject);
var
  strPATH: String;
begin
  strPath:=ExtractFilePath(Application.ExeName)+'Reports\';
  RvProject1.ProjectFile:=strPath+'PIM_Projektbericht_001.rav';
  RvProject1.SelectReport('Report1',true);
  RvSystem1.DefaultDest:=rdPreview;
  rvproject1.Execute;
Das Problem könnte evtl. sein, dass die Daten aus einem mir nicht erklärbarem Grund nur einmal geholt werden, denn ich habe in meinem Report eine andere Sektion, in der ich ebenfalls über CustomConnection Werte aus Edit-Feldern übergebe und diese werden immer angezeigt.

EDIT: Wie ich gerade getestet habe, springt der Report beim zweiten Aufruf gar nicht mehr in das OnGetRow-Event. Warum ist das so?

Gruß Igotcha
  Mit Zitat antworten Zitat