不幸的是,这并不简单。问题是,由于数据按类别分组,因此它会在下一个类别之前显示所有类别。即使你采取了按类别分组,你还是会落得像数据:
Category A Category B
detail 1
detail 1
detail 2
detail 2
detail 3
有一种方式来获得它正是你想要的方式,但每个类别下的整个结果集将被放入每个类别的一个字段中。如果您在屏幕上打印或查看它,这不是问题,但导出到Excel会将每列放入一个单元格;像这样:
Category A Category B
+---------+ +---------+
|detail 1 | |detail 1 |
|detail 2 | |detail 2 |
+---------+ |detail 3 |
+---------+
为了做到这一点,我们会创造什么基本上是一个文本磨合总场(或两个)。首先,报告标题中的初始化程序:
WhilePrintingRecords;
Global StringVar CatA := "";
Global StringVar CatB := "";
""; //print nothing on screen
然后,在详细信息部分中更新。细节部分本身实际上是隐藏的(而不是被取消)。
WhilePrintingRecords;
Global StringVar CatA;
Global StringVar CatB;
If {Table.Category} = "Category A"
//Chr(10) + Chr(13) is a return/newline
Then CatA := CatA + Chr(10) + Chr(13) + {Table.Detail};
If {Table.Category} = "Category B"
Then CatB := CatB + Chr(10) + Chr(13) + {Table.Detail};
""; //print nothing
最后,相关的类别一切完成后(我假设在组2:学生页脚),打印全局变量的结果。因此,对于A类:
WhilePrintingRecords;
Global StringVar CatA;
你将不得不确保结果字段设置为Can grow
。
EvilBob,这是一个很好的答案!我将在一个实现上述想法的版本上工作。我结束了使用子报表,但我有六个,所以你可以猜测它运行非常缓慢!希望你的方式能更快地工作。 –