2012-02-08 92 views
1

我已经为SSRS和Im编写了一份报告,其中使用了带有表达式的数据集筛选器来过滤报告信息。我似乎要么这个表达错误或过滤器工作不正常:SSRS报告 - 数据集筛选器

=IIf(Parameters!DoctorID.Value = "All" Or Parameters!DoctorID.Value = "", "*", Parameters!DoctorID.Value) 

我想用上面的代码来完成的,如果DoctorID = ALL或“”(空白),那么我想从忽略它过滤器,以便我为所有医生返回信息。但是,无论何时DoctorID的值为ALL,我都没有返回任何行。应该是这样,我得到所有行,因为DoctorID不是一个具体的数字。

“*”(星号)不表示省略该过滤器吗?我在这里做错了什么?

谢谢!

回答

0

您提供的过滤器公式只有等式的一半:运算符是什么,您将这与哪个进行比较?是的,我没有看到SSRS使用星号作为通配符。

考虑将您的过滤器放入数据集的查询中。 SQL WHERE子句可以变得非常强大。我会写你的过滤器到查询中,因为

... 
WHERE 
    @DoctorID = 'All' OR @DoctorID = '' 
    OR @DoctorID = myTable.DoctorID 

这也可以让你移动到一个多值参数很容易。

+0

感谢您的回复。我实际上使用了你的答案的变体来解决我的问题。 WHERE(@DoctorID ='All'和1 = 1)或者(doctor_id = @DoctorID)似乎有诀窍。 – Encryption 2012-02-09 14:48:14