如何在SSRS中获取子报表?

时间:2010-06-28 04:54:50

标签: sql-server reporting-services

我想知道是否有人可以告诉我以下哪些步骤我做错了。

  1. 有一个空白的新报告('空白')
  2. 拥有自己的现有报告('Sub1') 数据源和一个参数(int,名为'Likelihood',with 默认值)。它们位于同一个项目和同一文件夹中。
  3. 将子报表控件拖到新报表
  4. 在子报表控件属性中,选择“Sub1”作为“将此报表用作子报表”。
  5. 在参数选项卡中,单击添加。
  6. 尝试从下拉列表中选择一个名称(它是空的)。
  7. 输入'Likelihood'作为名称。
  8. 输入'1'作为值。
  9. 尝试并预览报告,获取“错误:无法显示子报告”。在预览和'rsErrorExecutingSubreport中'执行子报表'SubReport1'时出错(实例:0):对象引用未设置为对象的实例。在输出中(其中'Subreport1'是试图呈现报告'Sub1'的控件的名称。
  10. 我尝试过的事情:

    1. 输入'= 1'作为值。
    2. 将相同类型和名称的参数添加到主报告“空白”中。在子报表控件属性中将“参数”选项卡保留为空。还尝试将'Likelihood'条目的值设置为等于Blank报告中的参数('= Parameters!Likelihood.Value')。
    3. 将名称设置为“@Likelihood”(关于要求名称符合CLR的错误)。
    4. 将数据源和表等从子报表复制到空白父报表。
    5. 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>
      

      我遇到过许多其他有类似问题的人,但我还没有找到解决方案,并希望在正确的方向上找到一点。

2 个答案:

答案 0 :(得分:2)

我遇到了ActiveReports6上的一个论坛,遇到了相同的错误。在这种情况下,用户(DeepSeaDave),“在子报表的DataSourceChanged()事件中放置一个断点。当[他调用]主报表的Run()方法时,DataSourceChanged事件[触发]两次。第二次它被触发了当数据源[成为]没什么......“

在我复制/重命名现有报告(以及子报告)作为新模板的模板后,我遇到了同样的问题(也涉及子报告,也涉及共享数据源)。

<强>解决方案:

通过删除父报告中的数据源(报告项目中共享数据源的特定链接),然后重新创建它(保存和关闭),问题就消失了!

答案 1 :(得分:0)

我意识到我在子报表上使用了共享数据集,其他人遇到了这个问题。我删除了子报表中的所有内容,但直到我删除了该数据集才会呈现没有错误(即我删除所有内容后的预期空白页)。考虑到这一点,我玩了一些设置并提出了下面的“解决方案”。

对我来说“有效”的一个“解决方案”是:

  1. 将数据集设置为非共享,保存,预览(强制“重新缓存”或其他)。
  2. 在父报表上添加等效的非共享数据集。尝试预览。
  3. 撤消原始子报表更改(我确实做了源控件撤消)
  4. 确保您仍然可以预览子报告。
  5. 删除父报告上的数据集。
  6. 这是神奇的工作。
  7. 我希望我知道是什么导致它再次开始工作,我完全期望它会再次破裂,但我知道这就是我所做的,现在它的工作原理可能是一个缓存的报告问题?

    这不是一个解决方案,但我很想知道它是否有助于其他人,因为它可能会帮助我们解决问题。