【问题标题】:Report item expressions can only refer to fields within the current dataset - SSRS 2016报表项表达式只能引用当前数据集中的字段 - SSRS 2016
【发布时间】:2018-03-21 04:45:46
【问题描述】:

我正在 Visual Studio 2015 上创建一个 SSRS 报告,但使用 2 个数据源,原因是因为 1 个 DB 具有将显示在表上的信息,而第二个 DB 具有需要显示在表上的元数据用户悬停鼠标时的列标题。

我创建了 2 个数据集,其中 1 个我在列标题上使用工具提示表达式来引用仅包含元数据信息的第二个数据集,但我收到错误“报告项表达式只能引用当前数据集中的字段”。

我已经关注了很多对其他人有用但对我无效的指南和视频。有人告诉我使用查找,但是当我尝试预览报告时它一直失败。

以下是我目前正在尝试的

Using Lookup to show data from another Dataset

【问题讨论】:

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


    【解决方案1】:

    乔希, SSRS 报表项​​中的每个项都附加了一个 DataSet。假定每个函数都指向此 DataSet。

    但是,您可以“突破”并访问其他数据集。 SUM、FIRST 和 LAST 等聚合函数采用可选的第二个参数,即 DataSet 的名称。因此,例如,您的表可以附加到 DataSet1,但您想要 DataSet2 中所有数据的总和:

    SUM(Fields!SomeData.Value, "DataSet2")
    

    您还可以在聚合中嵌入函数。例如,如果您想要统计 DataSet2 中的所有男性:

    SUM(IIF(Fields!Gender.Value = "male", 1, 0), "DataSet2")
    

    这对于大多数情况来说应该足够了,但是在这些聚合函数中,除了您在函数中调用的数据集之外,您不能引用来自任何其他数据集的数据。有时您希望将数据匹配到另一个 DataSet 列并从不同的列中提取数据。这就是 LOOKUP 和 LOOKUPSET 发挥作用的地方。语法为 LOOKUP(本地字段名称、远程字段名称、要获取的远程字段、数据集名称)。例如,如果您想通过客户 ID 查找性别:

    LOOKUP(Fields!Client_ID.Value, Fields!Person_ID.Value, Fields!Gender.Value, "DataSet2")
    

    在上面的示例中,Client_ID 是 DataSet1 中的一列。其余列存在于 DataSet2 中。您可以通过使用字符串函数来检查多个列来获得更多幻想,但我认为这比您现在尝试完成的更高级。

    LOOKUPSET 的工作方式与 LOOKUP 相同,但返回一个匹配数组。当数据上没有一对一匹配时,您将使用它。

    希望这会有所帮助。我知道 LOOKUP 一开始让我有点困惑,而且文档也不是很有帮助。

    【讨论】:

    • 感谢 Lucky,这对我来说有点复杂,因为我开始使用 SSRS 世界,但当数据库位于不同的数据源上时会更复杂。我使用了一个聚合函数“First”,到目前为止,当我将鼠标悬停在标题标题上时,它正在显示描述,正如我所期望的那样。非常感谢您的时间和帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多