SSRS仅将参数应用于某些字段或排除LookUp / Expressions?

时间:2015-06-05 22:42:58

标签: reporting-services parameters report lookup ssrs-expression

我的报告显示employeeIDemployeeEmailsupervisorIDexpirationDate。然后,我使用此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?或者参数只过滤掉特定的列字段?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

通常,更好的解决方案是通过编辑查询以在员工和主管之间进行联接来检索数据集中每行的主管详细信息。这将更有效,然后您可以在员工日期过滤数据集并忘记查找功能,这意味着您的报告可以减少工作量。