我想在网格格式的FastReport中以表格(列: - ID)显示数据,如下所示。 假设表中有22条记录,那么它将在FastReport中以3 * 3网格显示相同的方式。
我在MasterData1频段内的主页面上使用子报表。子报告MasterData波段如下
MasterData1乐队
TfrxReportPage1 - 第2列
子报表 - MasterData2属性第3列,RowCount 9
但是当我预览快速报告时,它只是在页面上的每个网格中重复相同的数据,如下所示
我正在使用frxDBDataSet1来显示数据(Number Of Records 9)。共有28条记录,因此预计会在页面上显示4个3 * 3网格,其中包含27个ID。而是在每个3 * 3网格中重复前9个ID,如上所示。
如果我在frxDBDataSet1设置了记录数0,那么它将显示如下所示的内容 它不是形成3 * 3网格,而是连续显示数据
答案 0 :(得分:1)
编辑,因为上一个*答案不适用于较新版本
为子报告的masterdata band设置rowcount为9 在主报表中,复制包含子报表的masterdata band并将其插入两次 在主带之间放置一个标题带,并将属性StartNewPage设置为true 将OnBeforePrint事件添加到第二个和第三个子报表以更改数据集的过滤器。
procedure Subreport2OnBeforePrint(Sender: TfrxComponent);
begin
TfrxDBDataSet(Report.GetDataset('frxDBDataset1')).Dataset.Filter := 'ID>9';
TfrxDBDataSet(Report.GetDataset('frxDBDataset1')).Dataset.Filtered := true;
end;
procedure Subreport3OnBeforePrint(Sender: TfrxComponent);
begin
TfrxDBDataSet(Report.GetDataset('frxDBDataset1')).Dataset.Filter := 'ID>18';
TfrxDBDataSet(Report.GetDataset('frxDBDataset1')).Dataset.Filtered := true;
end;
(*)对于较旧的报告版本,您可以使用其他方法,该方法在版本4.10.01和4.12.14之间停止工作。
将 OnAfterPrint 事件添加到子报表上的备忘录中。打印9“行”后,将属性 StartNewPage 设置为true,Masterband的Rowcount必须设置为1。
procedure YourMemoFromTheSubReportToRepeat9TimesPerPageOnAfterPrint(Sender: TfrxComponent);
begin
MasterDataBandFromSubReport.StartNewPage := <Line#> mod 9 = 0
end;
答案 1 :(得分:0)
公共变量声明
public
i: integer;
myid: Array Of Integer;
mydesc: Array Of String;
k: Integer;
rowcount: Integer;
FormCreate事件中的代码
begin
i := 0;
k := 0;
UniTable1.SQL.Text := 'Select * from userplays';
UniTable1.Execute;
rowcount := UniTable1.RecordCount;
SetLength(myid, rowcount);
SetLength(mydesc, rowcount);
while not UniTable1.Eof do
begin
myid[k] := UniTable1.FieldByName('id').Value;
mydesc[k] := UniTable1.FieldByName('description').Value;
UniTable1.Next;
inc(k);
end;
end.
frxReport的OnGetValue事件中的代码
var
j: Integer;
begin
j := i div 2;
if j < rowcount then
begin
if (VarName = 'ID1') then
Value := myid[j];
if (VarName = 'DESC1') then
Value := mydesc[j];
end
inc(i);
以上ID1和DESC1是在frxReport备忘录中声明的两个变量,在Global Array myid&amp;帮助下在OnGetValue事件中分配给它的值。 mydesc。全球数组myid&amp; mydesc在FormCreate事件中填充了数据库字段值。