【问题标题】:How can I get From a SSRS DataSet Row the Value Where Condition is True如何从 SSRS 数据集行中获取条件为真的值
【发布时间】:2019-04-11 10:00:46
【问题描述】:

我有一个名为 Reporting 的数据集,其中包括 TagName、Value 和 DateTime。

现在我的问题是:在我的 SSRS 报告中,我有一个文本框,我想要一个 TagName 的值。

例如:我的 TagName 名为:"TT101",值为 21

所以我的文本框应该显示21

我试过这个表达式:

=IIf(Fields!TagName.Value = "TT101" , Fields!Value.Value ,0)

所以我希望这个表达式的输出是21,但它是0,因为它总是falseNull,我不知道为什么?

【问题讨论】:

    标签: reporting-services expression ssrs-2008 ssrs-expression


    【解决方案1】:

    如前所述,您有来自 Dataset 的数据,如下所示。 由于您已经拥有属性(列),它可以为您提供价值,为什么您需要任何表达式。

    在 SSR 中,只需使用表并将字段分配给一列,它将自动填充 N 行(例如,如果您的数据集返回 100 行,则为 100 行) 这是 SSRS 中 Tablix 的链接https://docs.microsoft.com/en-us/sql/reporting-services/report-design/tables-report-builder-and-ssrs?view=sql-server-2017

    根据您的评论,您只需要在 TagName 为 TT101 的情况下使用 max。 让我们做如下的事情。

    创建一个新列,我们称之为“标签 TT101 的值” 现在将此列设置为条件为的值

    IIf(Fields!TagName.Value = "TT101" , Fields!Value.Value ,0)
    

    这会做什么,如果标签名称不同,将为 TT101 或 0 设置值。

    现在你可以有如下的文本框表达式

    =Max(Fields!newColumValue.Value, "myDataSetName")
    

    这对你有用。

    【讨论】:

    • 我知道,但我需要将字段分配给文本框。作为表中的示例,我需要 TagName 为“TT101”的最大值。因此,TextBox 应该显示 45。抱歉,如果您误解了,但作为 Textbox 而不是 A Tablix。
    • 好的,我根据您的具体要求更新了我的答案。
    【解决方案2】:

    如果你真的只是想要你描述的内容,你需要在你的文本框表达式中添加一个Sum()。像这样。所有其他聚合函数也可以使用,例如 Max、Min、First 等。

    =Sum(IIF(Fields!TagName.Value = "TT101" , Fields!Value.Value ,0))
    

    在文本框中,您始终可以访问整个数据集,这就是您必须将其与Sum() 聚合的原因。如果您的数据集中有更多符合条件的行,您将得到一个总和。如果您确定只有一行满足此条件,您将获得21

    在没有文本框的情况下执行相同操作的另一种方法是使用 tablix。在 tablix 中添加整个数据集,然后转到 tablix 属性 > 过滤器并添加您的过滤器(“TT101”)。这样,当您有更多满足过滤条件的行时,您不会得到总和,您只会列出每一行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 2014-06-30
      • 2019-05-14
      相关资源
      最近更新 更多