如何让子报表在 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 时使用显式工作表名称

当子报表在多个页面上呈现时,如何在每个页面上显示主报表的列标题

s-s-rS 报表上的链接以导出/呈现到 Excel

如何识别 s-s-rS 中的报表项

在 s-s-rS 中,如何将父报表项的值与子组中的报表项进行比较?

s-s-rS 性能问题