AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rave Reports Mirror per Event Script

Ein Thema von alphanumeric · begonnen am 10. Nov 2009 · letzter Beitrag vom 12. Nov 2009
Antwort Antwort
Seite 2 von 2     12   
alphanumeric

Registriert seit: 9. Nov 2009
79 Beiträge
 
Delphi 2009 Enterprise
 
#11

Re: Rave Reports Mirror per Event Script

  Alt 11. Nov 2009, 16:26
hier mein constructor, der aufgerufen wird sobald die Form geöffnet wird.
Delphi-Quellcode:
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;
Hier die GetCols/GetRow:

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ß
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
148 Beiträge
 
Delphi 12 Athens
 
#12

Re: Rave Reports Mirror per Event Script

  Alt 11. Nov 2009, 16:58
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;
Hier auch schon mal gepostet.


Gruß, alphaflight
Make me a sandwich! - What? Make it yourself. - Sudo make me a sandwich! - Okay
  Mit Zitat antworten Zitat
alphanumeric

Registriert seit: 9. Nov 2009
79 Beiträge
 
Delphi 2009 Enterprise
 
#13

Re: Rave Reports Mirror per Event Script

  Alt 12. Nov 2009, 09:50
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.
  Mit Zitat antworten Zitat
Konchulio

Registriert seit: 16. Apr 2003
9 Beiträge
 
Delphi 2005 Professional
 
#14

Re: Rave Reports Mirror per Event Script

  Alt 12. Nov 2009, 11:27
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
  Mit Zitat antworten Zitat
alphanumeric

Registriert seit: 9. Nov 2009
79 Beiträge
 
Delphi 2009 Enterprise
 
#15

Re: Rave Reports Mirror per Event Script

  Alt 12. Nov 2009, 11:44
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:
if DS_pos_cposmodus.AsString='2then
DataMemo8.FontMirror := FM_ArialBold;
elseif DS_pos_cposmodus.AsString='1then
DataMemo8.FontMirror := FM_Arial;
elseif DS_pos_cposmodus.AsString='3then
DataMemo8.FontMirror := FM_ArialStrikeout;
end;
Hier werden die FontMaster Components gespiegelt.

Problem ist nur, wenn ich jetzt mit der syntax

Delphi-Quellcode:
if X then
DataBand.DataView:=DS_Whatever;

if DS_pos_cposmodus.AsString='2then
DataMemo8.FontMirror := FM_ArialBold;
elseif DS_pos_cposmodus.AsString='1then
DataMemo8.FontMirror := FM_Arial;
elseif DS_pos_cposmodus.AsString='3then
DataMemo8.FontMirror := FM_ArialStrikeout;
end;
end;
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?



Gruß
  Mit Zitat antworten Zitat
Konchulio

Registriert seit: 16. Apr 2003
9 Beiträge
 
Delphi 2005 Professional
 
#16

Re: Rave Reports Mirror per Event Script

  Alt 12. Nov 2009, 12:26
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
Miniaturansicht angehängter Grafiken
data_mirror_editor_188.gif  
  Mit Zitat antworten Zitat
alphanumeric

Registriert seit: 9. Nov 2009
79 Beiträge
 
Delphi 2009 Enterprise
 
#17

Re: Rave Reports Mirror per Event Script

  Alt 12. Nov 2009, 13:47
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ß
  Mit Zitat antworten Zitat
Konchulio

Registriert seit: 16. Apr 2003
9 Beiträge
 
Delphi 2005 Professional
 
#18

Re: Rave Reports Mirror per Event Script

  Alt 12. Nov 2009, 14:43
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:47 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