报表项表达式只能引用当前数据集中的字段 - SSRS 2016
Report item expressions can only refer to fields within the current dataset - SSRS 2016
我正在 Visual Studio 2015 创建 SSRS 报告,但使用了 2 个数据源,原因是因为 1 个数据库具有将显示在 table 上的信息,而第二个数据库具有当用户悬停鼠标时需要在列 header 上显示的元数据。
我创建了 2 个数据集,在第一个数据集上,我在 headers 列上使用工具提示表达式来引用第二个数据集,该数据集仅包含元数据信息,但出现错误 "Report item expressions can only refer to fields within the current dataset".
我遵循了很多指南和视频,这些指南和视频对其他人有用,但对我不起作用。我被告知要使用查找,但当我尝试预览报告时它总是失败。
以下是我目前正在尝试的
Using Lookup to show data from another Dataset
乔希,
SSRS 报表项中的每个项都附加了一个数据集。假定每个函数都针对此数据集。
但是,您可以 "break out" 访问其他数据集。 SUM、FIRST 和 LAST 等聚合函数采用可选的第二个参数,即数据集的名称。因此,例如,您的 table 可以附加到 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 的工作方式相同,但 returns 匹配数组。当数据没有 1 对 1 匹配时,您可以使用它。
希望这对您有所帮助。我知道 LOOKUP 一开始让我有点困惑,文档也不是很有帮助。
我正在 Visual Studio 2015 创建 SSRS 报告,但使用了 2 个数据源,原因是因为 1 个数据库具有将显示在 table 上的信息,而第二个数据库具有当用户悬停鼠标时需要在列 header 上显示的元数据。
我创建了 2 个数据集,在第一个数据集上,我在 headers 列上使用工具提示表达式来引用第二个数据集,该数据集仅包含元数据信息,但出现错误 "Report item expressions can only refer to fields within the current dataset".
我遵循了很多指南和视频,这些指南和视频对其他人有用,但对我不起作用。我被告知要使用查找,但当我尝试预览报告时它总是失败。
以下是我目前正在尝试的
Using Lookup to show data from another Dataset
乔希, SSRS 报表项中的每个项都附加了一个数据集。假定每个函数都针对此数据集。
但是,您可以 "break out" 访问其他数据集。 SUM、FIRST 和 LAST 等聚合函数采用可选的第二个参数,即数据集的名称。因此,例如,您的 table 可以附加到 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 的工作方式相同,但 returns 匹配数组。当数据没有 1 对 1 匹配时,您可以使用它。
希望这对您有所帮助。我知道 LOOKUP 一开始让我有点困惑,文档也不是很有帮助。