我正在使用2008R2开发SSRS Reporting Services。
问题:我有两张表Orders
和Customers
。
我加入两个表并获得足够的数据。
我的问题是如何将Customername
作为可选参数传递。我需要从查询中获取此值(我的意思是在下拉列表中显示客户名称)。
为此,我检查了参数名称的允许空值为true:客户名称。但在生成报告时,它会要求选择客户名称。
我也尝试过:
指定数据集的过滤条件,如下所示:
表达式:
=IIF(Parameters!CustomerName.Value is nothing or (Fields!CustomerName.Value =Parameters!CustomerName.Value),true,false)
(在第二个下拉列表中选择Boolean
)
运营商:=
值:true
答案 0 :(得分:0)
您是否考虑过在查询中应用过滤?
首先,根据填充了以下查询的数据集设置参数,例如Customer
:
select distinct CustomerID, CustomerName
from Customers
确保它可以传递NULL
个值。
然后在主数据集查询文本中,您可以通过将其引用为@Customer
来使用此处的参数:
select o.*
from Orders o
inner join Customers c on o.CustomerID = c.CustomerID
where c.CustomerName = @Customer or @Customer is null
显然,您需要更改自己的特定表格。
如果您希望默认选择所有客户,可以将参数的默认值设置为=Nothing
。
答案 1 :(得分:0)
考虑报告参数是CustomerName。在主数据集中写下以下查询:
IF(@CustomerName ='')
BEGIN
SELECT * FROM Table_Name
END
ELSE
SELECT * FROM Table_Name WHERE Column_Name = @CustomerName
希望这有帮助。
干杯!