不幸的是,这不是一件简单的事情。问题是,由于数据是按类别分组的,它会在下一个类别之前显示一个类别的所有内容。即使您按类别取出分组,您仍然会得到如下数据:
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
.