报告服务——SSRS仅将参数应用于特定字段或排除LookUp/Expressions



我有一个显示employeeID, employeeEmail, supervisorIDexpirationDate的报告。然后使用LookUp函数查找主管电子邮件:

=Lookup(Fields!supervisorID.Value, Fields!employeeID.Value, Fields!employeeEmail.Value, "DataSet1")

当我在expirationDate

上为特定日期范围设置参数时,出现问题
       expirationDate >=@startdate 
   AND expirationDate <=@enddate

这将缩小搜索结果,只显示在日期范围内具有截止日期的员工。但是,如果主管的expirationDate不在范围内,它也会过滤掉我的主管电子邮件地址。

我不希望LookUp表达式受到日期范围参数的约束。我希望主管邮件总是显示。因为日期范围参数旨在根据截止日期筛选员工,而不是主管。

因此,当显示员工时,因为他们的expirationDate在范围内,他们的supervisorID应该始终显示,但是因为LookUp表达式然后重新查询数据集以查找电子邮件,当expirationDate不在主管的范围中时,结果也被阻止。

是否有办法从参数中排除我的LookUp/Expression ?或者让参数只过滤掉特定的列字段?

所以你也在日期上过滤"DataSet1" ?您应该能够删除该过滤,以便数据集包含所有可查询的电子邮件地址。这不会影响报告中显示的监事,因为内容可能来自与DataSet1不同的数据集,这就是您使用查找的原因!

在哪里指定日期范围过滤器?如果它在数据集中,那么查找函数就没有办法引用数据集中不包含的行。一种可能性是将日期过滤器添加到(或您正在使用的任何数据区域),从而使数据集中的所有行都由查找函数引用。对于小数据集,这是一个不错的解决方案,但如果未过滤的数据集非常大,显然不能很好地扩展。

一般来说,更好的解决方案是通过编辑查询在员工和主管之间进行连接来检索数据集中每行的主管详细信息。这将更有效,然后您可以根据员工日期过滤数据集,而忘记查找函数,这意味着报表要做的工作更少。

最新更新