1

我有一个水晶报表,其子报表位于组的页脚。

此子报告显示基于传递给它的参数的计数。

我想在其他计算中使用这个值,所以我尝试创建一个共享数字变量。

但是,当我将带有共享数字变量的公式放在主报表中时——子报表本身旁边——它似乎显示了上一条记录的值

主报告截图

(已删除业务特定信息)

红色方块是子报告,绿色方块是我要打印的变量

子报表显示正确值,绿色公式显示上一条记录的子报表值。

截屏

子报告截图

一个公式,在报告页脚中:

截屏

子报告显示的公式

我相信这个公式在显示公式时正确设置了变量(这可能是我遇到的问题的关键):

Shared numberVar tryit;
tryit :=0;

If IsNull(count({IDNumber})) then
(
0
)
else
(
tryit :=count({IDNumber});
count({IDNumber})
)

在主报表上显示共享变量的公式

Shared NumberVar tryit;
tryit;

尝试 1:将变量移动到子报告下方(不成功)

Craig 建议我将要显示的变量移动到子报告执行位置下方的页脚部分。

我试过这个;但是,我不需要显示子报告,当我抑制它时,由于子报告未执行,所有共享变量似乎都变为 0。

下图:红色框为子报表,橙色为共享变量。只要子报表也显示就可以工作,但我不需要子报表,需要共享变量对父报表进行额外计算。

红色框是子报表,橙色是共享变量。 只要还显示子报告就可以工作

4

1 回答 1

1

在包含您的子报表的部分下方插入一个部分——它将是组页脚 1b。将引用共享变量的公式移动到这个新部分。

** 编辑 **

您将无法取消子报表;这样做会阻止它的生成。我建议缩小它的垂直高度,然后禁用它的“可以增长”属性。一般来说,您只需要让子报表的 ReportFooter 部分可见,即可生成要生成的变量。考虑将公式的文本设置为白色。

或者,您可以使用 SQL 表达式代替子报表。它的 SQL 将嵌入到“主”报告的 SELECT 子句中。SQL 表达式需要返回一个标量值。

至于处理模型,请阅读:Crystal Reports:报表处理模型。实质上,报表引擎需要生成子报表才能填充共享变量。在同一部分中拥有引用共享变量的子报表和公式是不可靠的。

于 2012-07-23T16:54:00.197 回答