![]() |
Re: Rave Reports Mirror per Event Script
hier mein constructor, der aufgerufen wird sobald die Form geöffnet wird.
Delphi-Quellcode:
Hier die GetCols/GetRow:
begin
adoConnectionString := adoConnectionString; raveSystem := TRvSystem.Create( self ); raveProject := TRvProject.Create( self ); ravePDFRender := TRvRenderPDF.Create( self ); raveDataSetConnection_Auf := TRvDataSetConnection.Create( self ); raveDataSetConnection_Pos := TRvDataSetConnection.Create( self ); raveDataSetConnection_Technik := TRvDataSetConnection.Create( self ); raveDataSetConnection_Design := TRvDataSetConnection.Create( self ); raveDataSetConnection_Flg := TRvDataSetConnection.Create( self ); raveDataSetConnection_VerAdr := TRvDataSetConnection.Create( self ); raveDataSetConnection_RecAdr := TRvDataSetConnection.Create( self ); raveDataSetConnection_TechPos := TRvDataSetConnection.Create( self ); raveDataSetConnection_UeberTechPos := TRvDataSetConnection.Create( self ); raveDataSetConnection_Revision := TRvDataSetConnection.Create( self ); dataSet_Auf := TADODataSet.Create( self ); dataSet_Pos := TADODataSet.Create( self ); dataSet_Technik := TADODataSet.Create( self ); dataSet_Design := TADODataSet.Create( self ); dataSet_Flg := TADODataSet.Create( self ); dataSet_VerAdr := TADODataSet.Create( self ); dataSet_RecAdr := TADODataSet.Create( self ); dataSet_RecLaen := TADODataSet.Create( self ); dataSet_VerLaen := TADODataSet.Create( self ); dataSet_E := TADODataSet.Create( self ); dataSet_TechPos := TADODataSet.Create( self ); dataSet_UeberTechPos := TADODataSet.Create( self ); dataSet_Revision := TADODataSet.Create( self ); raveProject.Engine := _raveSystem; raveProject.ProjectFile := '.\TestReport.rav'; raveProject.StoreRAV := true; //DataSet-Auf raveDataSetConnection_Auf.DataSet := dataSet_Auf; raveDataSetConnection_Auf.Name := 'Auf'; raveDataSetConnection_Auf.RuntimeVisibility := rtDeveloper; raveDataSetConnection_Auf.OnGetCols := raveDataSetConnection_AufGetCols; raveDataSetConnection_Auf.OnGetRow := raveDataSetConnection_AufGetRow; //Pos raveDataSetConnection_Pos.DataSet := dataSet_Pos; raveDataSetConnection_Pos.Name := 'Pos'; raveDataSetConnection_Pos.RuntimeVisibility := rtDeveloper; raveDataSetConnection_Pos.OnGetCols := raveDataSetConnection_PosGetCols; raveDataSetConnection_Pos.OnGetRow := raveDataSetConnection_PosGetRow; //Technik raveDataSetConnection_Technik.DataSet := dataSet_Technik; raveDataSetConnection_Technik.Name := 'Technik'; raveDataSetConnection_Technik.RuntimeVisibility := rtDeveloper; raveDataSetConnection_Technik.OnGetCols := raveDataSetConnection_TechnikGetCols; raveDataSetConnection_Technik.OnGetRow := raveDataSetConnection_TechnikGetRow; // raveDataSetConnection_Design.DataSet := dataSet_Design; raveDataSetConnection_Design.Name := 'Design'; raveDataSetConnection_Design.RuntimeVisibility := rtDeveloper; raveDataSetConnection_Design.OnGetCols := raveDataSetConnection_DesignGetCols; raveDataSetConnection_Design.OnGetRow := raveDataSetConnection_DesignGetRow; //AufträgeFlg raveDataSetConnection_Flg.DataSet := dataSet_Flg; raveDataSetConnection_Flg.Name := 'Flg'; raveDataSetConnection_Flg.RuntimeVisibility := rtDeveloper; raveDataSetConnection_Flg.OnGetCols := raveDataSetConnection_FlgGetCols; raveDataSetConnection_Flg.OnGetRow := raveDataSetConnection_FlgGetRow; raveDataSetConnection_VerAdr.DataSet := dataSet_VerAdr; raveDataSetConnection_VerAdr.Name := 'VerAdr'; raveDataSetConnection_VerAdr.RuntimeVisibility := rtDeveloper; raveDataSetConnection_VerAdr.OnGetCols := raveDataSetConnection_VerAdrGetCols; raveDataSetConnection_VerAdr.OnGetRow := raveDataSetConnection_VerAdrGetRow; raveDataSetConnection_RecAdr.DataSet := dataSet_RecAdr; raveDataSetConnection_RecAdr.Name := 'RecAdr'; raveDataSetConnection_RecAdr.RuntimeVisibility := rtDeveloper; raveDataSetConnection_RecAdr.OnGetCols := raveDataSetConnection_RecAdrGetCols; raveDataSetConnection_RecAdr.OnGetRow := raveDataSetConnection_RecAdrGetRow; raveDataSetConnection_TechPos.DataSet := dataSet_TechPos; raveDataSetConnection_TechPos.Name := 'TechPos'; raveDataSetConnection_TechPos.RuntimeVisibility := rtDeveloper; raveDataSetConnection_TechPos.OnGetCols := raveDataSetConnection_TechPosGetCols; raveDataSetConnection_TechPos.OnGetRow := raveDataSetConnection_TechPosGetRow; raveDataSetConnection_UeberTechPos.DataSet := _dataSet_UeberTechPos; raveDataSetConnection_UeberTechPos.Name := 'UeberTechPos'; raveDataSetConnection_UeberTechPos.RuntimeVisibility := rtDeveloper; raveDataSetConnection_UeberTechPos.OnGetCols := raveDataSetConnection_UeberTechPosGetCols; raveDataSetConnection_UeberTechPos.OnGetRow := raveDataSetConnection_UeberTechPosGetRow; raveDataSetConnection_Revision.DataSet := _dataSet_Revision; raveDataSetConnection_Revision.Name := 'Revision'; raveDataSetConnection_Revision.RuntimeVisibility := rtDeveloper; raveDataSetConnection_Revision.OnGetCols := raveDataSetConnection_RevisionGetCols; raveDataSetConnection_Revision.OnGetRow := raveDataSetConnection_RevisionGetRow;
Delphi-Quellcode:
procedure TForm_KundenauftragReport._raveDataSetConnection_AuftraegeVersandAdrGetCols( Connection: TRvCustomConnection); begin raveDataSetConnection_VerAdr.DoGetCols; raveDataSetConnection_VerAdr.WriteField('ADR',dtString, 20, 'ADR','ADR'); end; procedure TForm_KundenauftragReport._raveDataSetConnection_AuftraegeVersandAdrGetRow( Connection: TRvCustomConnection); begin _raveDataSetConnection_VerAdr.DoGetRow; Adr(); Last but Not least, das Dataset befüllen:
Delphi-Quellcode:
dataSet_Revision.Connection := adoConnection; dataSet_Revision.CommandText:= 'select * from Revision where nr=''xyz'''; dataSet_Revision.Open(); Der ado connection string wird aus einer DLL übergeben. Im Prinzip werden dann Alle DataConnections initalisiert beim start, da ich ja nen Create constructor hab. Die Form wird letztendlich über eine Funktion aufgerufen, dort wo meine datasets befüllt werden, und anschließend kann ich den Rave Dialog per druck auf nen button öffnen und damit halt weitermachen. ich habs jetzt so eingestellt dass er den Dialog nicht zeigt sondern direkt nen Preview ausgibt. Ist viel Tipperei, aber er hatte mit dem komponenten auf der oberfläche probleme, weswegen ich die sachen später erzeugen muss. Gruß |
Re: Rave Reports Mirror per Event Script
Uff, das ist ganz schön heftig.
Ich hab meine RvConnections in einem DataModule geparkt, RvProject und RvSystem liegen im RavePreview, das dann bei Bedarf dynamisch erzeugt wird. Mit dieser Kombination hatte ich noch nie Probleme. Rave macht bei mir nur Probleme, wenn RvDataSetConnections in verschiedenen Forms liegen. Die Reports wurden ebenfalls wie gesagt zur Designzeit erstellt. Ein Beispielaufruf:
Delphi-Quellcode:
(*******************************
** Procedure: Print_MenuClick ** *******************************) procedure TForm_Example.Print_MenuClick(Sender: TObject); var Form_RavePreview: TForm_RavePreview; begin Form_RavePreview := TForm_RavePreview.Create(self); Form_RavePreview.RvProject.ProjectFile := (AP_Path + '\DATA\REPORT\Example.rav'); Form_RavePreview.RvSystem.TitlePreview := 'Example-Preview'; Form_RavePreview.RvSystem.SystemPreview.FormState := wsMaximized; with Form_RavePreview.RvProject do begin Open; try SetParam('Caption_Example', 'Example-Caption'); SetParam( ... ); ExecuteReport('Report1'); finally Close; end; end; end; ![]() Gruß, alphaflight |
Re: Rave Reports Mirror per Event Script
ich hab mein problem übrigens nun so gelößt, dass ich ne funktion in delphi habe, die dann meinen string ins dataset reinschreibt. Funktioniert wunderbar.
|
Re: Rave Reports Mirror per Event Script
Hallo Zusammen,
grundlegend kann man wie folgt auf die Komponenten in einer *.rav-Datei zugreifen. var Report : TRavereport; Page : TRavePage; begin Report := RvReport.ProjMan.findravecomponent('Default' , nil) as TRavereport; Page := RvReport.ProjMan.findravecomponent('Main', Report) as TRavePage; end; über die TRavePage-Instanz (Page) kann man dann auf jedes Objekt auf der Rave-Seite zugreifen... ich hoffe das hilft euch weiter mfg Konchulio |
Re: Rave Reports Mirror per Event Script
Mir eröffnet sich derzeit ein ganz anderes problem:
Ich würde gerne ein DataBand spiegeln. sprich Databand von einer Globalen Seite soll auf meine Hauptseite gespiegelt werden. problem dabei ist wohl, dass die komponente keine Mirror eigenschaft hat. im Prinzip würde es reichen, wenn ich nur die Inhalte spiegele und dann den DataView per Event abfrage änder. Hier hab ich aber wohl syntaxprobleme, da ich in der OnBeforePrint bereits eine If Abfrage habe:
Delphi-Quellcode:
Hier werden die FontMaster Components gespiegelt.
if DS_pos_cposmodus.AsString='2' then
DataMemo8.FontMirror := FM_ArialBold; elseif DS_pos_cposmodus.AsString='1' then DataMemo8.FontMirror := FM_Arial; elseif DS_pos_cposmodus.AsString='3' then DataMemo8.FontMirror := FM_ArialStrikeout; end; Problem ist nur, wenn ich jetzt mit der syntax
Delphi-Quellcode:
drumsetzen will, krieg ich ne Zugriffsverletzung. problem ist dabei, wenn das DataView nicht auf DS_pos steht, krieg ich ebenfalls ne Zugriffsverletzung, weil die if's ja alle auf DS_pos gehen. Wie krieg ich den kram jetzt also sauber verkapselt?
if X then
DataBand.DataView:=DS_Whatever; if DS_pos_cposmodus.AsString='2' then DataMemo8.FontMirror := FM_ArialBold; elseif DS_pos_cposmodus.AsString='1' then DataMemo8.FontMirror := FM_Arial; elseif DS_pos_cposmodus.AsString='3' then DataMemo8.FontMirror := FM_ArialStrikeout; end; end; Gruß |
Re: Rave Reports Mirror per Event Script
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo alphanumeric,
das Spiegeln solcher Daten-Bänder geht wie folgt. Im Rave-Report-Designer... 1. Auf der Hauptseite die Komponente "DataMirrorSection" anlegen. 2. In der "DataMirrorSection"-Komponente die Eigenschaft "DataView" einstellen. (z.B. verbundenes Dataset aus Delphi) 3. In der "DataMirrorSection"-Komponente die Eigenschaft "DataField" einstellen. Dieses Feld wird für die Einschränkung/Bedingung herangenommen. 4. Anschließend über die "DataMirrors"-Eigenschaft den "Data Mirror Editor"(siehe Anhang) öffnen. Hier kann man nun die Bedingung(siehe auch Punkt 3) und die zu spiegelnde Section(z.B. DataBand auf Global Page) angeben. Die Default Einstellung wird dann herangezogen wenn keine Bedingung zutrifft. Das mit den FontMirror kann man dan aufs DataBand hinterlegen, oder wie oben beschrieben darauf zugreifen. Ich hoffe ich konnte weiter helfe.... mfg Konchulio |
Re: Rave Reports Mirror per Event Script
soweit ich das sehe, kann man mit dem dataMirror nur sections spiegeln oder? meine DataText krieg ich da nicht angezeigt.
edit: sry, zu blöd zum lesen ;) edit2: ich habe mir jetzt überlegt, einfach 2 reports anzufertigen und einen dritten von dem ich die daten, die sowieso gleich sind, herspiegeln kann. kann ich überhaupt von 1 Report zum anderen etwas spiegeln? Sprich meinetwegen nur die Elemente, nichtmal das databand. Also ich meine 2 Reports innerhalb von 1 Rave Project gruß |
Re: Rave Reports Mirror per Event Script
Hallo alphanumeric,
erst einmal was hast du den eigenglich vor. Im ersten Post wilst du ein DataBand spiegeln dann plötzlich ein DataText?! Schmeiß deine komponenten (egal ob datengebunden oder nicht und in deinem Fall dein DataText) in eine Section die auf einer Globale Seite liegt rein. Dann kannst du die Sections einfach spiegeln. Wenn du unterschiedliche Layouts willst, leg dir doch einfach noch eine Section an die du dann ensprechend lädts. Oder für ganz dynamische Reports kannst du gleich auf einer Globalen Seite alles realisieren und dann einfach nur noch auf deine Report-Seiten spieglen. Vorteil von Globalen Seiten --> man kann diese in mehreren Reports verwenden. Also...: 1. Auf eine Globale Seite legst du eine DataMirrorSection-Komponente an. 2. Dannach 2 Sechtion-Komponenten ebenfals auf die Globale Seite anlegen. 3. Eeine DataText-Komponente für jede Section-Komponente anlegen. 4. In Section1.DataText z.B. Fontmirror1; In Section2.DataText z.B. Fontmiror2 einstellen usw. 5. Die zwei Section kannst du nun wie im vorigen Post in die DataMirrorSection laden. 6. Nun kannst du das auf der globalen Seite liegende DataMirrorSection-Kompoenten wiederum auf deine Seit(en) spieglen. mfg Konchulio |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz