代码之家  ›  专栏  ›  技术社区  ›  Matt Mitchell

如何在SSR中呈现子报表?

  •  1
  • Matt Mitchell  · 技术社区  · 14 年前

    我想知道是否有人能让我知道我做了哪些错误的步骤。

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

    1. 在主报表“blank”中添加相同类型和名称的参数。将子报表控件属性中的“参数”选项卡保留为空。还尝试将“似然”项的值设置为等于空白报表上的参数(=参数)!可能性.值')。
    2. 将名称设置为“@似然”(要求名称为CLR兼容的错误)。
    3. 将数据源和表等从子报表复制到空白父报表。

    子报表控件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 回复  |  直到 11 年前
        1
  •  2
  •   Riegardt Steyn AdrianD    11 年前

    我遇到了一个关于ActiveReport6的论坛,在那里遇到了相同的错误。In that case, the user (DeepSeaDave), "put a breakpoint in the subreport's DataSourceChanged() event. 当[他调用]主报表的run()方法时,datasourceChanged事件[激发]两次。它第二次[激发]是当数据源[变为]无内容时…”

    I encountered the same problem (also involving a sub-report, and also involving Shared Data Sources), after I had copied/renamed an existing report (as well as the sub-report) as the template for a new one.

    解决方案:

    By deleting the Data Source (report specific link to the Shared Datasource in the Project) in my parent report, and re-creating it (saving and closing down in between), the problem went away!

        2
  •  0
  •   Matt Mitchell    14 年前

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

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

    1. 将数据集设置为非共享、保存、预览(强制“重新缓存”或其他)。
    2. 在父报表上添加等效的非共享数据集。尝试预览。
    3. 撤消原始子报表更改(我确实执行了源代码撤消)
    4. 确保仍然可以预览子报表。
    5. 删除父报表上的数据集。
    6. 它神奇地工作着。

    我希望我知道是什么导致了它重新开始工作,我完全希望它会再次崩溃,但我知道这是我所做的,现在它工作了,所以它可能是缓存报告问题?

    这不是一个解决方案,但我很感兴趣听到它是否能帮助其他人,因为它可能会帮助我们孤立这个问题。