2012-03-14 91 views

回答

0

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

从共享字段上的内存来看,就像这样......用这段代码创建一个公式字段,然后将该公式放在报告的某处。您可以隐藏它,因此不可见。

shared numberVar rowcount := 0; 

设置共享变量等于子报告中的行数。做同样的事情,(创建在子报表中的公式域),但这样的:

shared numberVar rowcount := <number of rows>; 

有代码遍布于不同的方式来获得的行数。

然后回到您的主报告中,制作一个包含“ - ”的文本字段,并在共享变量大于0时将其压制。您还可以右键单击子报告并将其设置为在空白时禁止(如果需要)。

最后,确保在子报表下方放置文本字段“ - ”(使用压缩功能),因为Crystal在尝试之前不会知道子报表中有多少条记录。水晶很有趣。

+0

此SO链接有另外一种方法使用共享变量来获得行的总数在报表... http://stackoverflow.com/questions/1268348/retrieve -record-count-of-subreport-in-crystal-reports – RThomas 2012-03-14 00:47:38

+0

感谢的是,替代文本是用于子报表,并且在该子报表的同一行中有另一个子报表,所以我不能使用共享变量,因为替代文本必须与另一个子报表位于同一行。我最终使用命令来做到这一点。 – sam 2012-03-14 04:31:20

+0

@Mark Ba​​nnister的方式应该适合你。 – RThomas 2012-03-14 16:14:50

1

假设你希望“ - ”在报表内出现,把它放在子报表的报表页眉或报表页脚节并设置知名度可以是文本项目或部分(取决于你是否希望部分出现的不管返回多少条记录)有条件地抑制像一个公式:

Count ({Table.Field})>0 
+0

谢谢我已经试过,如果没有记录返回,子报表中的任何内容都不会显示,所以我必须使用命令作为数据源,例如从Table union中选择Table.Field select' - '从Table where(从Table中选择count(Table.Filed))= 0 – sam 2012-03-16 05:00:01

2

您需要2个细节部分在报表中。在1中放置了你有记录时想要显示的内容。右键单击同一部分,然后选择科专家...。检查抑制空白部分复选框,以便在没有任何内容显示时禁用此部分使用的空间。在其他详细信息部分添加一个公式,该公式显示没有记录时要显示的内容。在你的例子中,这将是“ - ”。创建计数记录的另一个公式并将其命名为RecordCount。

WhileReadingRecords; 

NumberVar RecordCount := RecordCount + 1; 

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

Not Isnull ({@RecordCount}) 

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

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

0

我可以建议你最好的办法就是玩弄的解决方案水晶报表,从你的问题你要显示“ - ”当没有数据存在,因此,这里的答案:

第一: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