我正在Visual Studio 2015上创建SSRS报告,但使用2个数据源,原因是因为1个数据库具有将在表上显示的信息,而第二个数据库具有需要在其上显示的元数据。用户悬停鼠标时的列标题。
我创建了2个数据集,1我在列标题上使用工具提示表达式来引用第二个只有元数据信息的数据集,但是我收到错误“报表项表达式只能引用当前数据集中的字段“。
我已经关注了许多适用于其他人的指南和视频,但它对我不起作用。有人告诉我使用查找但是当我尝试预览报告时它会一直失败。
以下是我正在尝试的内容
答案 0 :(得分:0)
乔希, SSRS报告项中的每个项都附加了一个DataSet。假设每个函数都指向此DataSet。
然而,你可以"爆发"并访问其他DataSet。 SUM,FIRST和LAST等聚合函数采用可选的第二个参数,该参数是DataSet的名称。因此,例如,您的表可以附加到DataSet1,但您需要DataSet2中所有数据的总和:
SUM(Fields!SomeData.Value, "DataSet2")
您还可以在聚合中嵌入函数。例如,如果您想要DataSet2中所有男性的计数:
SUM(IIF(Fields!Gender.Value = "male", 1, 0), "DataSet2")
对于大多数情况来说这应该足够了,但在这些聚合函数中,您不能引用任何其他DataSet中的数据,而不是您在函数中调用的数据集。有时,您希望将数据与另一个DataSet列匹配,并从另一列中提取数据。这是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起初对我来说有点混乱,文档也没有用。