我们在许多时候,通过脚本从数据库查询出来的统计结果集是面向行的,而实际报表却是面向列。我们不得不自己实现它的行列置换操作。
QDataSet 提供了一个全新的 Cross 函数来完成这一功能:
procedure Cross(AColField, AKeyField, AValueField, AKeyName: QStringW);
我们对函数的几个参数做个简单的说明:
- AColField : 定义了用于作为字段名列表的字段
- AKeyField : 定义了用于作为行关键字的字段
- AValueField : 定义了用于作为交叉值的字段
- AKeyName : 定义了用于做为行关键字字段的字段名,如果不指定,则为 AKeyField
我们来看一个例子效果,左侧为原始结果集内容,右侧是复制左侧的结果集后,使用下面的代码转换的结果:
FDest.Cross('Year','Animal','Total','Animal');