我在SSRS中有一个包含两个数据集的报告。一个数据集NegativeNumbers
返回一个列,其中包含0或更多主值数据集中使用的值。
当@NegativeNumbers
没有值传递时出现问题我收到错误:
NegativeNumbers参数缺少值。
NegativeNumbers查询并不总是返回一个值(这是正确的),因此我需要主数据集在没有值时仍能正确执行。我认为检查“允许空值”会解决这个问题,但不会。
参数@NegativeNumbers
是隐藏的,所以它不会取空值,即使我检查它以允许空值和多个值。默认值设置为NegativeNumbers
数据集值。隐藏的人不喜欢可用的值。
以下是NegativeNumbers数据集的基本代码:
select colName
where colName < 0 -- returns all values less than 0 as values
-- for parameter "NegativeNumbers"
以下是主要数据集的基本代码:
select bunchOfColumns
from mytable
where aColumnName in (@NegativeNumbers)
-- this returns only the values where the column value is a match for one
-- of the values returned by the @NegativeNumbers dataset
实际查询要比这复杂得多,并且包含union all语句,但这说明了我要做的事情。如果第一个查询没有返回任何值,那么第二个查询给出了错误。如果数据集为空并且选中“允许空值”,为什么它不会只用“in ('')
”代替@NegativeNumbers
的值?
我在搜索Google。没运气。我玩过不同的参数选项。没运气。我重建了这份报告。没别的了。我总是得到这个错误,但我不知道如何解决它。
*在我的桌子上敲打我的脑袋,质疑我的编码存在的意义 *叹
这是一些高级SSRS的东西,我不是最好的解释所以如果有任何问题可以帮助澄清我想要做什么,请求。
答案 0 :(得分:2)
所以我做了一个解决方法,我的NegativeNumbers总会返回一个数据集。
if exists (select query)
then select query
else '2'
//my key will never equal 2 so the main dataset will
//always return the results from only the positives
可以轻松解决问题!