报表项表达式只能引用当前数据集中的字段 - SSRS 2016



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

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

我遵循了很多指南和视频,其中它适用于其他人,但对我不起作用。我被告知使用查找,但当我尝试预览报告时它一直失败。

以下是我目前正在尝试的

使用查找显示来自另一个数据集的数据

Josh, SSRS 报表项中的每个项都附加了一个数据集。假定每个函数都指向此数据集。

但是,您可以"突破"并访问其他数据集。聚合函数(如 SUM、FIRST 和 LAST)采用可选的第二个参数,该参数是数据集的名称。因此,例如,您的表可以附加到 DataSet1,但您需要来自 DataSet2 的所有数据的总和:

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

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

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

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

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

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

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

希望这有所帮助。我知道 LOOKUP 起初对我来说有点混乱,文档也不是很有帮助。

相关内容

最新更新