我有一个Crystal Report链接到SQL Server数据库中的表Customer . 我的报告生成器将执行SELECT SQL并将结果表作为数据源传递给报告 .
在报告中,我有一个字段,我希望此字段在表的特定行索引和列索引处显示单元格数据(可能我知道列名称) . 例如,我的字段应显示数据源第3行第2列的单元格 .
如何使用Crystal Report执行此操作 . 最新版本现在是2011年 .
首先,为了使行号具有任何含义,您需要使用ORDER BY子句查询表(通过对报表进行排序) . 没有它,你不能对DB中的“原始记录顺序”做任何假设,因为实际上没有 .
根据您要在其中显示报告的位置,有几种方法可以获取此字段 . 如果您只是想在详细信息部分中显示它,您可以使用这样的简单公式
if rownumber = 3 then {table.column}
如果您想将其显示在页脚中,则可以使用变量:
whileprintingrecords; numbervar thedatavariable; if recordnumber = 3 then thedatavariable := {table.column}
将该公式放在报告的详细信息部分中,然后您就可以在页脚中自由使用数据变量 .
现在为列:如果列索引不是动态的,您可以看到哪个列对应...例如,如果表的列是customer_id,则customer_name然后第2列将始终只是客户名称 . 如果索引号将改变,例如通过参数,您可以制作这样的公式
select {?colIndexParameter} case 1 : {table.customer_id} case 2 : {table.customer_name} ...
1 回答
首先,为了使行号具有任何含义,您需要使用ORDER BY子句查询表(通过对报表进行排序) . 没有它,你不能对DB中的“原始记录顺序”做任何假设,因为实际上没有 .
根据您要在其中显示报告的位置,有几种方法可以获取此字段 . 如果您只是想在详细信息部分中显示它,您可以使用这样的简单公式
如果您想将其显示在页脚中,则可以使用变量:
将该公式放在报告的详细信息部分中,然后您就可以在页脚中自由使用数据变量 .
现在为列:如果列索引不是动态的,您可以看到哪个列对应...例如,如果表的列是customer_id,则customer_name然后第2列将始终只是客户名称 . 如果索引号将改变,例如通过参数,您可以制作这样的公式