如何在子报表中没有返回记录时显示备用文本?
e.g。如果子报表中没有返回记录,我想显示' - ' 感谢
答案 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