我的报告中包含两个数据集。第一个数据集用于将参数填充到第二个数据集。一切正常,直到第一个数据集没有值,于是我得到一个参数X缺少一个值消息。
有没有办法解决这个问题?
答案 0 :(得分:3)
假设您正在使用Cascading Parameters,您可以使用类似于以下内容的查询来填充第二个参数的DataSet:
if exists (select 1 from Param2 where paramVal = @Param1)
begin
select paramVal, paramDetail
from Param2
where paramVal = @Param1
end
else
begin
select paramVal = 'None', paramDetail = 'None'
end
这只是一种解决方法,如果没有任何其他行要返回,使用if...else
构造返回一个虚拟行 - 这样即使没有匹配,你总是会返回至少一行为第一个参数值。
您可以在报告中稍后按要求处理这些虚拟行。
如上所述,这是解决您的具体问题的解决方法,但希望能提供一些帮助。
评论后添加:
我刚刚测试过 - 它与多值参数的工作原理相同;只需将=@Param1
更改为in (@Param1)
。
如果第二个DataSet中有一个或多个匹配项,则返回这些行,否则只返回虚拟行。
我确实需要在VS中关闭/重新打开报告,但这可能是无关的。