我在一个报告中有2个数据集,5个列中的2个来自dataset1,3个来自dataset2(数据集2是主要数据集)。现在,当我尝试使用下面的switch命令时,它不会给我任何错误,但不会显示任何结果。 dataset1是一个共享点列表。
=SWITCH(First(Fields!xyz.Value, "dataset1")="Platinum",25,First(Fields!xyz.Value, "dataset1")="",0,First(Fields!xyz.Value, "dataset1")="Gold",15)
Tablix中的所有其他列都来自dataset2,报告运行良好,此列中没有数据
答案 0 :(得分:0)
First()
表达式可能是问题,以及更改IIF条件时它的工作原因。 First()只是从目标数据集中获取命名字段中的第一个值,因此如果它不是" Platinum",则为空字符串或" Gold"它什么都不会返回。另一方面,如果abc的第一个值是1或3,它将始终返回" Platinum"或者" Gold"
重要的是要意识到这将在表的每一行返回完全相同的数据,因为您只是查看数据集1的第一行。
我认为您可能在LookUp()函数之后,它将使用主键来匹配数据集,并根据数据集2的当前行中的数据从数据集1中获取不同的数据。
希望有道理吗?
编辑回复评论:
您可以通过两种方式完成此操作。例如,您可以使用相同的LookUp()公式来填充switch语句中的列以获取点;
=Switch(LookUp(Fields!application_name.Value, Fields!application_name.Value, Fields!service_level.Value, "dataset1") = "Platinum", 25, LookUp(Fields!application_name.Value, Fields!application_name.Value, Fields!service_level.Value, "dataset1") = "Gold", 15)
其次,您可以直接引用已经提取的列" Gold"或"白金"。例如,如果该文本框被称为Textbox10(检查属性面板的右上角以查看名称),那么您可以使用:
=Switch(ReportItems!Textbox10.Value = "Platinum", 25, ReportItems!Textbox10.Value = "Gold", 15)
任何一种方法都可以正常工作。基本上你在那里做的是确保你总是检查该应用程序的正确服务级别,而不仅仅是数据集1中的第一个