![]() |
Datenbank: mySQL • Version: 5.x • Zugriff über: ZEOS
Grds. Frage zum Rave-Report
Hallo zusammen,
ich habe eine Eingabeoberfläche für einen Projektbericht erstellt, die aus mehreren TabSheets besteht, in denen der Anwender Informationen hinterlegen kann. Diese Informationen werden in einer mySQL-DB gespeichert und im Programm mit VirtualTreeviews dargestellt. Es sind rund 20 VTVs, in denen Daten zeilenweise angezeigt werden. Zudem gibt es noch ein "Stammblatt", in denen Daten wie Projektname, Start, etc. in Form von Edit-Feldern angezeigt werden - diese werden abenfalls in der mySQL-DB gespeichert. Jetzt möchte ich einen Bericht dazu erstellen, sprich die im Programm angezeigten Informationen (Stammdaten und aus den VTVs) zu Papier bringen. Der Bericht soll fortlaufen geschrieben werden in der Form: STAMMDATEN Überschrift DATEN AUS VTV1 Überschrift DATEN AUS VTV2 etc. Da ich mir Delphi über den Weihnachtsabverkauf zugelegt habe, besitze ich keine Handbücher für Rave (für Delphi selbst brauche ich die nicht), sondern nur die über Download (Rave-HP) erhältlichen (firststeps, etc.) und zudem ist es mein erster Versuch mit Rave. Da man den Bericht auch aus einer anderen Anwendung drucken können soll, müssen die Daten also per SQL bezogen werden. Es gibt jetzt eine RvDataSetConnection und eine RvQueryConnection. Welche ist grds. dafür besser geeignet? Und muß ich im Fall einer RvDataSetConnection auch 20 DataSets mit jeweils einer Query auf die Form packen? Gruß Igotcha |
Re: Grds. Frage zum Rave-Report
ich würde über die CustomConnection von Rave gehen. suche hier einmal nach diesem Wort, dürften einige Threads als Treffermenge sein...
Zitat:
Zitat:
:-) thomas, TeamNevrona |
Re: Grds. Frage zum Rave-Report
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:
Aufgerufen wird der Report mit:
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;
Delphi-Quellcode:
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.
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; 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 |
Re: Grds. Frage zum Rave-Report
Es ist spät, aber ich habe eine Lösung gefunden - keine Ahnung, warum das funktioniert ;-)
Delphi-Quellcode:
Grüße,
procedure TFProjektbericht.RVCERLOESEOpen(Connection: TRvCustomConnection);
begin Connection.DataRows:=9; Connection.DoFirst; // damit läuft es auch bei Folgeaufrufen des Reports end; Igotcha |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 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 by Thomas Breitkreuz