如何让子报表在 s-s-rS 中呈现?
Posted
技术标签:
【中文标题】如何让子报表在 s-s-rS 中呈现?【英文标题】:How do you get a subreport to render in s-s-rS? 【发布时间】:2010-06-28 04:54:50 【问题描述】:我想知道是否有人可以让我知道我做错了以下哪些步骤。
-
有一个空白的新报告(“空白”)
有一个现有的报告('Sub1'),它有自己的
数据源和一个参数(int,名为“Likelihood”,与
默认值)。它们位于同一个项目和同一个文件夹中。
将子报表控件拖到新报表上
在子报表控件属性中,选择“Sub1”作为“将此报表用作子报表”。
在参数选项卡中单击添加。
尝试从下拉列表中选择一个名称(为空)。
输入“可能性”作为名称。
输入“1”作为值。
尝试预览报表,得到“错误:无法显示子报表。”在预览和“rsErrorExecutingSubreport] 执行子报表“SubReport1”(实例:0)时发生错误:对象引用未设置为对象的实例。在输出中(其中“Subreport1”是尝试呈现报表“Sub1”的控件的名称。
我尝试过的事情:
-
输入“=1”作为值。
向我的主报告“空白”添加相同类型和名称的参数。在子报表控件属性中将“参数”选项卡留空。还尝试将“可能性”条目的值设置为等于空白报告中的参数 ('=Parameters!Likelihood.Value')。
将名称设置为“@Likelihood”(有关要求名称符合 CLR 的错误)。
将数据源和表格等从子报表复制到空白父报表。
SubReport 控件 rdl:
<Subreport Name="Subreport1">
<ReportName>Sub1</ReportName>
<Parameters>
<Parameter Name="Likelihood">
<Value>10</Value>
</Parameter>
</Parameters>
<Top>2cm</Top>
<Left>2cm</Left>
<Height>7cm</Height>
<Width>7cm</Width>
<ZIndex>1</ZIndex>
<Style>
<Border>
<Style>None</Style>
</Border>
</Style>
</Subreport>
我遇到过许多其他类似问题的人,但我还没有找到解决方案,希望能指出正确的方向。
【问题讨论】:
【参考方案1】:我在 ActiveReports6 上的一个论坛中遇到了相同的错误。在这种情况下,用户 (DeepSeaDave),“在子报表的 DataSourceChanged() 事件中设置断点。当 [他调用] 主报表的 Run() 方法时,DataSourceChanged 事件 [触发] 两次。第二次 [触发是] 当数据源 [变成] Nothing..."
在我将现有报告(以及子报告)复制/重命名为新报告的模板后,我遇到了同样的问题(也涉及子报告,还涉及共享数据源)。
解决方案:
通过在我的父报表中删除数据源(报表特定链接到项目中的共享数据源)并重新创建它(保存并在其间关闭),问题就消失了!
【讨论】:
【参考方案2】:我意识到我在子报表中使用了共享数据集,而其他人也遇到了这个问题。我删除了子报告中的所有内容,但直到我删除了该数据集,它才会呈现而不会出现错误(即,由于我删除了所有内容,因此出现了预期的空白页)。考虑到这一点,我尝试了一些设置,并提出了下面的“解决方案”。
对我来说“有效”的一个“解决方案”是:
-
将数据集设置为非共享、保存、预览(以强制“重新缓存”或其他方式)。
在父报表上添加等效的非共享数据集。尝试预览。
撤消您原来的子报表更改(我确实做了源代码管理撤消)
确保您仍然可以预览您的子报告。
删除父报表上的数据集。
它神奇地起作用了。
我希望我知道是什么导致它再次开始工作,并且我完全希望它会再次中断,但我确实知道这是我所做的,现在它可以工作了,所以可能是缓存报告问题?
这不是一个解决方案,但我很想知道它是否对其他人有帮助,因为它可能会帮助我们隔离问题。
【讨论】:
以上是关于如何让子报表在 s-s-rS 中呈现?的主要内容,如果未能解决你的问题,请参考以下文章
在 Excel 中呈现 s-s-rS 08 RDL 时使用显式工作表名称
当子报表在多个页面上呈现时,如何在每个页面上显示主报表的列标题