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