回答
这是一种方法。创建一个跟踪子报告行数的共享变量,然后在该计数为零时显示文本字段。
从共享字段上的内存来看,就像这样......用这段代码创建一个公式字段,然后将该公式放在报告的某处。您可以隐藏它,因此不可见。
shared numberVar rowcount := 0;
设置共享变量等于子报告中的行数。做同样的事情,(创建在子报表中的公式域),但这样的:
shared numberVar rowcount := <number of rows>;
有代码遍布于不同的方式来获得的行数。
然后回到您的主报告中,制作一个包含“ - ”的文本字段,并在共享变量大于0时将其压制。您还可以右键单击子报告并将其设置为在空白时禁止(如果需要)。
最后,确保在子报表下方放置文本字段“ - ”(使用压缩功能),因为Crystal在尝试之前不会知道子报表中有多少条记录。水晶很有趣。
假设你希望“ - ”在报表内出现,把它放在子报表的报表页眉或报表页脚节并设置知名度可以是文本项目或部分(取决于你是否希望部分出现的不管返回多少条记录)有条件地抑制像一个公式:
Count ({Table.Field})>0
谢谢我已经试过,如果没有记录返回,子报表中的任何内容都不会显示,所以我必须使用命令作为数据源,例如从Table union中选择Table.Field select' - '从Table where(从Table中选择count(Table.Filed))= 0 – sam 2012-03-16 05:00:01
您需要2个细节部分在报表中。在1中放置了你有记录时想要显示的内容。右键单击同一部分,然后选择科专家...。检查抑制空白部分复选框,以便在没有任何内容显示时禁用此部分使用的空间。在其他详细信息部分添加一个公式,该公式显示没有记录时要显示的内容。在你的例子中,这将是“ - ”。创建计数记录的另一个公式并将其命名为RecordCount。
WhileReadingRecords;
NumberVar RecordCount := RecordCount + 1;
将此公式放置在报告的详细信息部分并将其禁用。您将其放入哪个详细信息部分并不重要。最后,右键单击将显示何时没有记录的相同部分。选择部分专家...。单击公式按钮为禁止(无向下钻取),并添加这个公式......
Not Isnull ({@RecordCount})
你可以看到,如果你的公式本身是空只检查所以公式中的代码不是那么重要,但是我希望在报告中的其他地方使用它的情况下使用它。
现在,当您有记录时,第二个详细信息部分被取消,第一个详细信息部分显示您的数据。如果没有记录,则会反转显示第二个详细信息部分,而第一个详细信息部分被禁用。
我可以建议你最好的办法就是玩弄的解决方案水晶报表,从你的问题你要显示“ - ”当没有数据存在,因此,这里的答案:
第一:1创建一个新公式在子报告和使用编辑器中,并编写以下公式: shared stringvar myvar;
if isnull({Id_colounm_name}) then myvar := "-" else myvar:="+"
注意:此处Id_coloumn_name是可以决定记录为空的行成员。
第二个2: 保存公式并创建一个新页面标题部分并将其抑制,然后将此公式添加到新创建和抑制部分。
三3: 转至主报告,并创建一个新的公式,可以使用编辑器编写公式如下: shared stringvar disp;
保存并关闭公式编辑器。
第四个4: 现在在晶体报告所在的部分下面插入一个部分。 现在去部分专家通过右键点击该部分 并选择公式图标后,右侧的“禁止”,并添加下面的公式:
shared stringvar myvar; if myvar <> "-" then true else false
保存并关闭公式并选择图标右后“取消空白节”并添加以下公式:
shared stringvar myvar; if myvar="+" then true
保存并关闭公式,现在将在主报告中创建的公式添加到新创建的部分。保存。
第五5: 右键单击子报表,然后选择“格式对象”,然后选择“子报表”选项卡,选中“剿空白子报表” ,然后在部分中,右键单击您的子报告所在,然后转到“部分专家”,然后选中“剿空白部分”
这就是你能做的一切,现在运行的报告,并检查其工作或不
注注注:包含子报告中的部分不应该包含其他字段的任何其他文本和子报表中包含公式的部分都必须被抑制,并且在主代表中包含公式的部分或者doest必须被压制。
希望它可以帮助 感谢和问候 SRIKANTH
- 1. 在Crystal报表中使用子报表
- 2. 如果子报表在Crystal报表中返回无数据,我们是否可以取消主报表记录?
- 3. 记录在子报表不会显示在水晶报表
- 4. Crystal Reports:有没有办法在子报表中有效地获取子报表?
- 5. 访问Crystal子报表不显示它
- 6. Crystal报表 - 一个子报表与其下的第二个子报表重叠
- 7. 的Crystal Reports子报表
- 8. iReport子报表返回值
- 9. Microsoft报表查看器子报表,子报表页脚未显示
- 10. 子报表中的ActiveReports子报表
- 11. 水晶报表子报表
- 12. 在iReport中将子报表中的值返回给主报表
- 13. Crystal报表通过分配给报表的特定记录显示表的所有记录
- 14. 如何在Crystal报表中抑制按需子报表?
- 15. 如何在Crystal报表中抑制子报表的钻取2008
- 16. 将子报表中的值返回主报表
- 17. 子报表没有打印
- 18. 水晶报表 - 当子报表存在时在主报表中抑制标题
- 19. 嵌入水晶报表页脚中的子报表没有显示数据
- 20. 子报表值不会显示在主报表中
- 21. 单个报表对象中的多个子报表显示
- 22. Crystal报表,子报表和共享变量
- 23. 水晶报表子报表没有表格异常
- 24. 在Crystal Reports中检索子报表的记录数
- 25. Crystal Reports中的智能子报表?
- 26. VB + Crystal报表
- 27. Crystal报表
- 28. MS报表生成器子报表不显示
- 29. crystal报告子报告
- 30. 将子报表组总和汇总到主报表中报表水库报表
此SO链接有另外一种方法使用共享变量来获得行的总数在报表... http://stackoverflow.com/questions/1268348/retrieve -record-count-of-subreport-in-crystal-reports – RThomas 2012-03-14 00:47:38
感谢的是,替代文本是用于子报表,并且在该子报表的同一行中有另一个子报表,所以我不能使用共享变量,因为替代文本必须与另一个子报表位于同一行。我最终使用命令来做到这一点。 – sam 2012-03-14 04:31:20
@Mark Bannister的方式应该适合你。 – RThomas 2012-03-14 16:14:50