我有一个Crystal Report链接到SQL Server数据库中的表Customer。我的报告生成器将执行SELECT SQL并将结果表作为数据源传递给报告。
在报告中,我有一个字段,我希望此字段在表的特定行索引和列索引处显示单元格数据(可能我知道列名称)。例如,我的字段应显示数据源第3行第2列的单元格。
如何使用Crystal Report执行此操作。最新版本现在是2011年。
答案 0 :(得分:1)
首先,为了使行号具有任何含义,您需要使用ORDER BY子句查询表(通过对报表进行排序)。没有它,你不能对数据库中的“原始记录顺序”做任何假设,因为实际上没有。
根据您要在其中显示报告的位置,有几种方法可以获取此字段。如果您只是想在详细信息部分中显示它,您可以使用像这样的简单公式
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} ...