Da sitze ich nun schon 9 Stunden, lese mich durchs Forum durch, google, probiere rum - und habe schon Teilerfolge, aber Rave macht nicht, was ich will.
Irgendwas ist noch falsch.
Ich habe "Delphi XE" und "Rave Reports 9.0 BE". Bleiben wir erst mal bei Rave; wenn das geht, sollte auch mein Code in Delphi laufen.
Also, in Rave:
Ich habe 2 Regionen definiert.
1. Region ist eine Art Briefkopf und hat ein Band mit ein paar Datenfeldern, die ich mit SetParameter fülle.
2. Region besteht aus einem Überschriften-Band, wo "ControllerBand" auf 'DataBand2' gesetzt ist; Bandstyle: "G 1P"
Darunter habe ich das "Databand2", wo "DataView" auf 'DataView1' gesetzt ist; Bandstyle: "Master 1P"
Im DataBand2 habe ich 9 DataText-Felder, die durchnummeriert bei "DataField" Datatext# heißen (# steht für die Nummer) und jeweils "DataView" auf Dataview1 gesetzt sind.
Rechts in der Auflistung unter "Data View Dictionary" und darunter "Dataview" habe ich meine 9 "DataView1DataText#" - letztlich ist irgendwie alles so, wie es auf 50 Seiten im Internet beschrieben wird.
Klicke ich jetzt auf Drucken (im Rave), also Druckvorschau, dann generiert mir das Ding ohne Pause 500 Seiten pro Sekunde. Ich breche es dann ab.
Ich hab hin und herprobiert und es klappt einfach nicht.
Was mache ich falsch?
Ich stelle gerade fest, daß - sobald ich mein Programm beende - Rave nicht mehr endlos Seiten generiert, sondern nur noch eine Zeile von Databand2 bringt, in der in allen Feldern "(invalid)" steht (die Überschriftenzeile fehlt dann aber).
Nun, dann mal noch den Quelltext in Delphi dazu...
Delphi-Quellcode:
procedure TForm2.RvCCGetCols(Connection: TRvCustomConnection);
begin
with Connection do begin
WriteField('DataText3',dtString,10,'','');
WriteField('DataText4',dtString,10,'','');
WriteField('DataText5',dtString,10,'','');
WriteField('DataText6',dtString,10,'','');
WriteField('DataText7',dtString,10,'','');
WriteField('DataText8',dtString,10,'','');
WriteField('DataText9',dtString,10,'','');
WriteField('DataText10',dtString,10,'','');
WriteField('DataText11',dtString,10,'','');
end;
end;
procedure TForm2.RvCCGetRow(Connection: TRvCustomConnection);
function Logik:string;
begin
if FallGrid.Cells[8,RvCC.Tag]='R' then result:=' R' else
if FallGrid.Cells[3,RvCC.Tag]='J' then result:=' X' else
result:=' X';
end;
begin
with Connection do begin
WriteStrData(FallGrid.Cells[0,RvCC.Tag],''); //O
WriteStrData(FallGrid.Cells[1,RvCC.Tag],''); //H
WriteStrData(FallGrid.Cells[2,RvCC.Tag],''); //A
WriteStrData(FallGrid.Cells[9,RvCC.Tag],''); //R
WriteStrData(Logik,'?'); //Vorgang ->logik
WriteStrData(FallGrid.Cells[4,RvCC.Tag],''); //T1
WriteStrData(FallGrid.Cells[5,RvCC.Tag],''); //T2
WriteStrData(FallGrid.Cells[6,RvCC.Tag],''); //T3
WriteStrData(FallGrid.Cells[7,RvCC.Tag],''); //T4
end;
end;
procedure TForm2.RvCCNext(Connection: TRvCustomConnection);
begin
with RvCC do Tag:=Tag+1;
end;
procedure TForm2.RvCCOpen(Connection: TRvCustomConnection);
begin
RvCC.Tag:=1;
Connection.DataRows:=FallGrid.RowCount;
end;
In meinem Projekt habe ich die Komponenten RvSystem, RvProject und RvCustomConnection (RvCC).
In RvProject habe ich die "Engine" auf RvSystem1 gesetzt.
So, das sollte alles relevante nun zeigen. Ich weiß nicht weiter. Ist mein erstes Projekt mit Rave...