Zitat von
Union:
Aktiviere doch das Child abhängig von der Bedingung vorher. Dazu musst Du nur ein TFrxDataSet verwenden, welches die Bedingung des Master "vorwegnimmt". Beispiel in PascalScript:
Delphi-Quellcode:
var
MahnStufe : integer;
begin
Ch1.Visible := False;
Ch2.Visible := False;
Ch3.Visible := False;
MahnStufe := TfrxDBDataset(Report.GetDataset('rechnungen')).FieldByName('MahnStufe').AsInteger;
if MahnStufe = 1 then
Ch1.Visible := True
else
if MahnStufe = 2 then
Ch2.Visible := True
else
if MahnStufe = 3 then
Ch3.Visible := True;
oh, das hört sich sehr vielversprechend an. Leider kennt Fastreport TFrxDataSet und auch
TfrxIBODataset nicht. Ich arbeite mit TfrxIBODataset wegen den IBO Komponenten. Unter Delphi
gibt es natürlich die Komponenten TfrxIBODataset. Möglicherweise habe ich bei der Installation
etwas falsch gemacht. Ich kann mich auch schwach erinnern das bei früheren Versionen im Designer
die Dataset Komponenten verfügbar wahren. In der aktuellen Installation fr4_6_28_d5p eben nicht.
Ich werde versuchen ob ich das nachinstallieren kann.
Bitte noch zwei Punkte:
-welches Event soll Dein Script ausführen? PageHeader.OnBeforePrint oder MasterData.OnBeforePrint oder an einer anderen Stelle?
-Du verwendest z.B.: Ch2.Visible := True was ist das bitte für ein Bandtyp?
Bei mir reagiert ein TfrxChild erst dann auf visible wenn ich vorher einem übergeordneten Band das Child
eingetragen habe z.B.: PageHeader.Child := Ch2; Solange die Childs nicht einem Band untergeordnet werden,
werden sie nicht angezeigt.
Gruß Kostas
[EDIT] hab die aktuelle Version installiert. Wie war das bitte nochmal, welche
Unit müsste ich einbinden
um TfrxDBDataset in Designer verwenden zu können?
[EDIT2]
Jetzt bin ich ein Stück weiter gekommen
Auf der IBO Website habe ich eine Komponenten gefunden für FastReport. jetzt habe ich auch ein TfrxIBODataset.
Jetzt bleibt nur noch die Frage, an welcher Stelle müssen die Childs zugeordnet werden.
Delphi-Quellcode:
procedure PageHeader1OnBeforePrint(Sender: TfrxComponent);
begin
MahnStufe := TfrxIBODataset(Report.GetDataset('Mahnvorschlagsliste')).FieldByName('MAHNSTUFE').AsInteger;
case MahnStufe of
0:begin
H1.child := Ch0;
end;
1:begin
H1.child := Ch1;
end;
2:begin
H1.child := Ch2;
end;
3:begin
H1.child := Ch3;
end;
end;{case}
end;
Nachdem das auch nicht funktioniert hat, habe ich den Report komplett
gelöscht und neu Schritt für Schritt aufbauen wollen. Dabei ist das
eigentliche Problem ist in Erscheinung getreten.
Das HeaderBand greift auf die Daten des letzen Records zu,
obwohl ich definitiv vor den ReportStart den Datensatzzeiger an den Anfang stelle.
Wenn ich den Report starte wobei das Property StartNewPage=false
bei MasterDataBand steht, sehe ich die richtige Reihenfolge der Daten
im MasterDataBand. Das HeaderBand hat jedoch den ArtikelNr vom letzten Datensatz!
Ich würde erwarten das der header die ArtikelNr vom ersten Datensatz anzeigt.
Schalte ich nun das Property StartNewPage=true bei MasterDataBand ist die erste
Seite wieder falsch mit dem letzen Datensatz, und die anderen drei Seiten stimmen.
Hat da jemand eine Idee?
Gruß Kostas