我要接管由其他人创建的报告,该报告由主报告和7个子报告组成。子报表之一具有一个数字字段(OTHER_TIME_INT),我需要获取所有子报表。我的问题是该选项仅存在于此一个子报表中,而我无法弄清楚该字段来自何处。
如果不在主报表中,如何从一个子报表到所有子报表中获取该字段?
也-该报告由在SSMS中创建的命令语句填充。在原始sql查询中,将OTHER_TIME_INT定义为整数。
答案 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)
重要警告:要显示子报表中的共享变量值,主报表中的公式必须位于子报表部分下方的部分...