当子报表中没有返回记录时,Crystal报表子报表显示备用文本

时间:2012-03-14 00:20:14

标签: crystal-reports

如何在子报表中没有返回记录时显示备用文本?

e.g。如果子报表中没有返回记录,我想显示' - ' 感谢

4 个答案:

答案 0 :(得分:2)

您的报告中需要2个详细信息部分。在1中记录您有记录时想要显示的内容。右键单击相同的部分,然后选择 Section Expert ... 。选中抑制空白部分复选框,以便在没有任何内容显示时禁止此部分使用此空间。在其他详细信息部分添加一个公式,打印出没有记录时要显示的内容。在你的例子中,这将是“ - ”。创建另一个计算记录的公式,并将其命名为RecordCount。

WhileReadingRecords;

NumberVar RecordCount := RecordCount + 1;

将此公式放在报告的详细信息部分并禁止显示。您放置哪个详细信息部分并不重要。最后,右键单击将在没有记录时显示的相同部分选择部分专家... 。单击抑制(无向下钻取)的公式按钮,然后添加此公式...

Not Isnull ({@RecordCount})

你可以看到你只是在检查公式本身是否为空,所以公式中的代码并不是那么重要,但是我希望在我希望在报告的其他地方使用它时使其有用。

现在,当您有记录时,第二个详细信息部分被禁止,第一个详细信息部分显示您的数据。如果没有记录,则会反转,并在第一个详细信息部分被抑制时显示第二个详细信息部分。

答案 1 :(得分:0)

这是一种方法。创建一个跟踪子报告行数的共享变量,然后显示一个文本字段(如果该计数为零)。

从共享字段的内存中可以看出这样的内容......使用此代码创建一个公式字段,然后将该公式放在报表的某个位置。你可以隐藏它,使其不可见。

 shared numberVar rowcount := 0;

将共享变量设置为等于子报告中的行数。做同样的事情,(在子报告中创建一个公式字段)但是像这样:

 shared numberVar rowcount := <number of rows>;

有不同的方法来获取行数。

然后返回主报表,创建一个包含“ - ”的文本字段,并在共享变量大于0时禁止它。您也可以右键单击子报表并将其设置为在空白时禁止。< / p>

最后,确保将文本字段“ - ”(带抑制函数)放在子报表下面,因为Crystal在尝试之前不会知道子报表中有多少条记录。水晶很有趣。

答案 2 :(得分:0)

答案 3 :(得分:0)

我可以建议的最好的方法是使用水晶报告解决方案,从你的问题中你想在没有数据时显示“ - ”,所以这里是答案:

首先:1在子报表和使用编辑器中创建新公式并编写以下公式: shared stringvar myvar; if isnull({Id_colounm_name}) then myvar := "-" else myvar:="+"
注意:这里Id_coloumn_name是行成员,可以决定记录为空。

第二个2: 保存公式并创建一个新的页眉部分并禁用它,然后将此公式添加到新创建和抑制的部分。

第三名3: 转到主报表并创建新公式,使用编辑器编写以下公式: shared stringvar disp;
保存并关闭公式编辑器。

第四节: 现在在水晶报告所在的部分下面插入一个部分。 现在通过右键单击该部分转到部分专家 并在“抑制”后选择公式图标并添加以下公式:
shared stringvar myvar; if myvar <> "-" then true else false
保存并关闭公式并选择“抑制空白部分”后面的图标并添加以下公式:
shared stringvar myvar; if myvar="+" then true
保存并关闭公式,现在将主报表中创建的公式添加到新创建的部分。保存它。

第五节5: 右键单击子报表并选择“格式对象”,然后选择“子报表”选项卡并选中“Supress Blank Subreport” 然后右键单击子报告所在的部分,然后转到“部分专家”,然后选中“抑制空白部分”

这就是你所能做的一切,现在运行报告并检查它是否正常工作

注意注意:包含子报表的部分不应包含其他字段的任何其他文本,并且必须抑制子报表中包含公式的部分,并且必须抑制包含主报表中的公式的部分。

希望它有所帮助 感谢致敬 Srikanth