如何获取仅在一个Crystal子报表中存在的字段才能在其他子报表中显示

时间:2020-04-06 21:35:37

标签: crystal-reports ssms

我要接管由其他人创建的报告,该报告由主报告和7个子报告组成。子报表之一具有一个数字字段(OTHER_TIME_INT),我需要获取所有子报表。我的问题是该选项仅存在于此一个子报表中,而我无法弄清楚该字段来自何处。

如果不在主报表中,如何从一个子报表到所有子报表中获取该字段?

也-该报告由在SSMS中创建的命令语句填充。在原始sql查询中,将OTHER_TIME_INT定义为整数。

2 个答案:

答案 0 :(得分:0)

一旦打印了子报表,在子报表中找到的数据就会超出范围。为了解决这个问题,您将需要使用全局变量。这是创建全局变量的基本步骤。

在数据存在的子报表上,您将需要创建一个新的公式字段。您可以随意命名,但是对于这个答案,我将其命名为GetVariable。这是您要在此公式字段中输入的公式。

Shared NumVar otherTime;
otherTime := {OTHER_TIME_INT}

第一行使用数据类型NumVar初始化名为otherTime的变量,而第二行从子报表上的字段为其分配值。 Shared关键字指示变量的范围。 Crystal Reports中的变量有3个不同的作用域,分别是本地,全局和共享。局部变量只能在创建它们的公式中使用,全局变量只能在主报告文档的范围内使用(没有子报表),共享变量可以在整个主报告及其所有子报告中使用。

GetVariable公式字段放到显示您的{OTHER_TIME_INT}字段的子报表中,然后编辑GetVariable公式字段的格式属性,以使其隐藏并在屏幕上不可见子报表。

任何您想检索此变量的地方现在也将需要一个新的公式字段。例如,如果您在第二个子报表中需要此变量的值,则需要在该子报表中创建一个新的公式字段。同样,该字段的名称可以是您想要的任何名称,但是在此示例中,我将其称为GetValue。该字段的公式为:

Shared NumVar otherTime;
otherTime;

同样,第一行创建名称为otherTime的变量。它已经具有以前的值,因此无需分配一个。第二行显示otherTime变量的值。

这是一个非常基本的示例,说明如何使用变量将值从一个子报表传递到另一个子报表,但是我还建议您查阅有关如何在Crystal Report中使用变量的很好的教程,以获取更多信息。

答案 1 :(得分:0)

重要警告:要显示子报表中的共享变量值,主报表中的公式必须位于子报表部分下方的部分...

相关问题