如何在 Crystal 报告中放置特定行

How do I place specific rows on a Crystal Report

我有一个 Crystal 报告,它调用存储过程 return table 包含各种值。

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

{sp_MyReport.Column1}

并根据需要在报告中散播他们。对于 select 不同的行,我将 selection 公式更改为:-

{sp_MyReport.IdColumn} = 2

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

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

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

如果没有,我应该做什么?

一种方法是创建一个包含存储过程的子报表,然后使用共享变量缓存这些值。

为应显示在主报表中的每个值定义一个变量,并为其分配相应的值。

子报表中的公式如下所示:

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}

要显示 main-report 中的值,创建如下公式:

WhilePrintingRecords;
Shared NumberVar myValueX;

子报表应放在 report-header 部分内,因为变量总是从上到下求值。

要隐藏子报表,只需减小大小,直到它足够小以适合报表中的某处,而无需 "destroying" 报表设计。
(不要压制子报表,因为那样它就不会被评估。)