Einzelnen Beitrag anzeigen

Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#1

Rave: CustomConnection zur Laufzeit hinzufügen?

  Alt 12. Nov 2008, 10:02
Hiho!

Ist es wohl möglich - und wenn ja, wie - zur Laufzeit einem Rave-Project eine Custom-Connection zuzuweisen?

Hintergrund ist folgender:
Ich habe ein Programm mit IntraWeb geschrieben, welches je Sitzung ein Protokoll ausgeben soll (via Rave).
Das funktioniert an sich auch wunderbar, das 1. Protokoll wird einwandfrei geschrieben, jedoch sind sämtliche Protokolle danach (aus der 2. Sitzung z.B.) leer.
Allerdings mit der Anzahl der Sätze aus der 1. Sitzung (also muss dort noch irgendwie ein Rest herumschwirren...)

Jetzt war meine Vermutung, dass es daran liegt, dass ich die Rave-Komponenten in der Anwendung als solches hatte.
Daraufhin habe ich diese in die User-Session verschoben, das hat aber nichts gebracht.

Als Nächstes hab ich versucht die Komponenten zur Laufzeit in meiner UserSession zu Erzeugen und dann auszuführen.
Das resultiert dann darin, dass er gar nichts mehr anzeigte, weil er die Custom-Connection nich mehr finden konnte.

Also habe ich diese wieder fest als Komponente in meiner User-Session eingebunden, den Rest(rvProject etc.) zur Laufzeit erzeugt und bin jetzt wieder bei der Ausgangssituation.... :-/

Von daher möchte ich jetzt versuchen, auch die CustomConnection zur Laufzeit zu erzeugen und diese dann dem Rave-Projekt zuzuweisen.
Ist das möglich und wenn ja, wie?


Delphi-Quellcode:
// generates the output as a pdf-document
procedure TIWUserSession.generatePDF(pdfName: String; ravName: String);
var
  rvProject: TRvProject;
  rvSystem: TRvSystem;
  rvPDF: TRvRenderPDF;
begin
  // init components
  rvProject := TRvProject.Create(self);
  rvSystem := TRvSystem.Create(self);
  rvCcOutputs := TRvCustomConnection.Create(self);
  rvPDF := TRvRenderPDF.Create(self);
  // apply events to custom-connection
  rvCcOutputs.OnEOF := rvCcOutputsEOF;
  rvCcOutputs.OnFirst := rvCcOutputsFirst;
  rvCcOutputs.OnGetCols := rvCcOutputsGetCols;
  rvCcOutputs.OnGetRow := rvCcOutputsGetRow;
  rvCcOutputs.OnNext := rvCcOutputsNext;
  rvCcOutputs.OnOpen := rvCcOutputsOpen;
  // modify custom connection
  rvCcOutputs.DataIndex := 0;
  rvCcOutputs.DataRows := outputSets.Count;
  // modify rave-system-properties
  rvSystem.SystemOptions := rvSystem.SystemOptions - [soShowStatus];
  rvSystem.SystemSetups := rvSystem.SystemSetups - [ssAllowSetup];
  rvSystem.DefaultDest := rdFile;
  rvSystem.DoNativeOutput := false;
  rvSystem.RenderObject := rvPDF;
  rvSystem.OutputFileName := pdfName;
  // modify rave-project
  rvProject.Engine := rvSystem;
  rvProject.ProjectFile := ravName;
  // execute report
  rvProject.Execute();
  // reset report & custom-connection
  rvProject.Close();
  rvCcOutputs.DataRows := 0;
  rvCcOutputs.DataIndex := 0;
end;

Danke im Voraus

cu Patrick
  Mit Zitat antworten Zitat