我有一个Crystal Report,它调用存储过程来返回包含各种值的表。
我希望在报告的各个位置放置此表的各行。为此,我使用公式中指定的数据项创建公式字段: -
{sp_MyReport.Column1}
并在必要时将其分散到报告中。要选择不同的行,我将选择公式更改为: -
{sp_MyReport.IdColumn} = 2
但是当我这样做时,所有其他公式字段中的记录选择都会更改为匹配,因此我只能显示一行数据项。
首先,创建公式字段是正确的方法来解决这个问题(我必须不断删除标题中的文本,这表明它可能不是预期用途)?
如果是这样,我如何让不同的公式字段显示不同的行?
如果没有,我该怎么办?
答案 0 :(得分:1)
一种方法是创建一个包含存储过程的子报表,然后使用共享变量缓存这些值。
定义应在主报告中显示的每个值的变量,并为其指定相应的值。
子报表中的公式如下所示:
WhilePrintingRecords;
Shared NumberVar myValueX;
Shared NumberVar myValueY;
//assign the corresponding value to the variable
If {sp_MyReport.IdColumn}=2 Then myValueX := {sp_MyReport.ValueColumn}
If {sp_MyReport.IdColumn}=3 Then myValueY := {sp_MyReport.ValueColumn}
要在主报表中显示值,请按以下方式创建公式:
WhilePrintingRecords;
Shared NumberVar myValueX;
子报表应放在报表头部分内,因为变量总是从上到下进行评估。
要隐藏子报告,只需缩小大小,直到它小到足以适合报告的某个位置,而不会“#34;”破坏"报告设计。
(不要压缩子报告,因为它不会被评估。)