【问题标题】:SSRS report Tables and Sub ReportsSSRS 报告表和子报告
【发布时间】:2018-11-25 10:56:16
【问题描述】:

我有一个 SSRS,其中包含游戏。在每场比赛中,有多个球队,然后将他们分为进攻球队和防守球队。所以有一个游戏,然后是游戏细节。其中有多个团队,然后是有关团队的信息,无论他们是进攻型还是防守型。然后,如果他们被指定为攻击性的,他们将拥有攻击性记录和 ID。如果有防守,他们会有防守记录和ID。

我设置了一个基于存储过程的主报告,其中包含游戏和主要游戏详细信息。然后我为团队创建了一个子报告,其中包含团队的详细信息,无论他们是进攻型还是防守型。这是一个游戏团队的记录。每场比赛记录多个。所以层次结构和报表/子报表设置如下:

  • 游戏(存储的 proc 参数作为 GID 传递 - 游戏 ID)
  • 游戏团队(具有相同 GID 参数的存储过程)
  • 游戏团队 - 进攻(使用相同 GID 参数存储的过程)
  • 游戏团队 - 防御(具有相同 GID 参数的存储过程)

在游戏报告中,我有一个 tablix,其中包含 fields ,然后是一个额外的 tablix 行,其中合并了列。我在其中放置了一个子报表对象,并将其设置为 Game Teams 报表对象。

子报表属性具有参数集 Name GID(匹配子报表参数名称)和 value = ID(即 GID 字段)。

该游戏团队报告有一个带有详细信息字段的 tablix,然后是 2 个额外的 tablix 行,每行都包含合并的列。一种将进攻性报告设置在子报告对象中,另一种将防御性报告设置在子报告对象中。它们中的每一个都具有来自其存储过程的相同 GID 参数,然后我设置了一个 GTID 参数,并将 Game Teams 报告中的参数链接到 Game Teams 数据集中的 GTID 字段。

我可以运行报告,但链接似乎无法正确提取数据。我一直在研究这个,但它太令人困惑了。

当我在 Game Teams - Offensive/Defensive 报告中设置 GTID 报告参数时,我看不到我如何告诉报告当此参数链接到 Game Teams 报告时,子报告应该过滤数据集结果到 GTID 字段。

我希望我说的是有道理的。这是我第一次尝试做一个 SSRS 子报表,它是如此令人困惑。我在水晶报告中做过,在过去,在 Access 中。您将字段链接到字段。我不明白你为什么不在 SSRS 中这样做。

【问题讨论】:

    标签: sql-server reporting-services parameter-passing ssrs-2012 subreport


    【解决方案1】:

    我不知道你在 Crystal 中做什么,但在 SSRS 中这很简单。

    在子报表属性中,点击参数中的省略号,你会得到一个对话框。对于子报表期望的每个参数(它们在name 列中),您提供一个value,它告诉报表为该参数传递给子报表的内容。您可以使用每个值旁边的 fx 按钮来帮助您构建表达式。

    如果您尝试过此操作但未获得预期结果,您可以向我们展示“参数”对话框的屏幕截图并说明您想要获得的结果。

    【讨论】:

    • 我确实尝试过。所以每个报告都有一个基于它自己的存储过程的数据集。所有 sp 都具有相同的 @GID 参数,因此我们可以将每个报告的数据限制为 1 场比赛。在每个子报表中,我研究的内容表明您也需要在主报表 - 子报表属性中创建一个报表参数,将该子报表的报表参数链接到主报表字段。我在子报表中设置了一个 GTID 报表参数,并在主报表中将其链接到主报表 GTID,但我不知道子报表如何知道 GTID 参数链接到哪个字段。 1 个 GID 中有多个 GTID。
    • 你必须告诉它表达式中的哪一个。如果没有看到一些具体的例子和截图,我不能比这更具体。
    • “你必须告诉它表达式中的哪一个”我不知道这是什么意思。如果我在设计一个子报表,并且我创建了一个报表参数,我如何在子报表中设置该参数的含义和该子报表数据集中的ID列?我不确定哪些屏幕截图会有所帮助。每个报表、数据集、tablix、组、属性都无处不在。
    • 好的,你想作为参数传递给子报表的值:你能把它显示在报表上吗?如果是这样,您会告诉报告显示什么表达式/值?
    【解决方案2】:

    我发现了我的问题!!!我在子报表 GTID 中创建了报表参数。要将其链接到子报表中的字段,我转到该报表的数据集属性,添加一个过滤器,从数据集字段中选择 GTID 字段,选择“In”,然后单击 fx 并选择 GTID 参数值。

    设置后,您将无法单独运行子报表,除非您让该报表参数可见,以便您可以指定一个值。

    在主报表上,其他一切都是正确的,除了最好将主报表分组,然后再进行详细分组(如果表格或 tablix 中有内容)。我将子报表放在详细信息行中,所有单元格都合并了。我设置了 subreport properties 参数以添加一个链接 GTID 子报表参数的参数,到主报表的数据集字段中的 GTID 字段。

    瞧!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 2021-04-24
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多