Crystal reports 如何在Crystal报表上放置特定行

Crystal reports 如何在Crystal报表上放置特定行,crystal-reports,Crystal Reports,我有一个Crystal报表,它调用存储过程返回一个包含各种值的表 我想把这张表的各行放在报告的不同位置。为此,我使用公式中指定的数据项创建公式字段,因此:- {sp_MyReport.Column1} 必要时向他们散布有关报告的信息。要选择不同的行,我将选择公式更改为:- {sp_MyReport.IdColumn} = 2 但当我这样做时,所有其他公式字段中的记录选择都会更改为匹配,因此我只能显示一行数据项 首先,创建公式字段是正确的方法吗(我必须在标题中保留空格,这表明它可能不是预期用途

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

我想把这张表的各行放在报告的不同位置。为此,我使用公式中指定的数据项创建公式字段,因此:-

{sp_MyReport.Column1}
必要时向他们散布有关报告的信息。要选择不同的行,我将选择公式更改为:-

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

首先,创建公式字段是正确的方法吗(我必须在标题中保留空格,这表明它可能不是预期用途)

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


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

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

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

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

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;
要在主报告中显示该值,请创建如下公式:

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;
子报表应该放在报表标题部分中,因为变量总是从上到下进行计算

要隐藏子报表,只需减小其大小,直到它足够小,可以放在报表的某个位置,而不会“破坏”报表设计。

(不要抑制子报表,因为这样它就不会被计算。)

如果您试图只调用标题和值,那么简单的方法是使用交叉选项卡,在列上放置
{sp_MyReport.IdColumn}
,在行上放置值