如何在Crystal Report上放置特定行

时间:2017-12-18 11:49:37

标签: crystal-reports

我有一个Crystal Report,它调用存储过程来返回包含各种值的表。

我希望在报告的各个位置放置此表的各行。为此,我使用公式中指定的数据项创建公式字段: -

{sp_MyReport.Column1}

并在必要时将其分散到报告中。要选择不同的行,我将选择公式更改为: -

{sp_MyReport.IdColumn} = 2

但是当我这样做时,所有其他公式字段中的记录选择都会更改为匹配,因此我只能显示一行数据项。

首先,创建公式字段是正确的方法来解决这个问题(我必须不断删除标题中的文本,这表明它可能不是预期用途)?

如果是这样,我如何让不同的公式字段显示不同的行?

如果没有,我该怎么办?

1 个答案:

答案 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;”破坏"报告设计。
(不要压缩子报告,因为它不会被评估。)