传递列名时报告参数不起作用

Report Parameter not working when passing column name

我的报告的目的是检查以给定列名作为参数的空值。

问题是它没有将我的参数从报表传递到数据集。我有一个名为 @employeeField 的报告参数。在我的数据集的参数部分,我将 ParameterName 设置为 @employeeField 并将值设置为 [@employeeField].

我的数据集的示例查询:

SELECT top 100 employeePK from Employees WHERE @employeeField is null

这也是它在运行时评估的结果(当我将文本框设置为 =DataSets!dsDetails.CommandText 时)此外,如果我输入无效的列名作为参数,报告将正常执行。我本以为它会抛出一个错误,但它并没有。

感谢您的任何意见 -- 如果需要更多说明,我可以edit/comment

想出了一个解决方案 -- 但如果它是正确的,则不是肯定的。

我认为如果有人试图动态构建他们的查询,则有必要使用 表达式

当您传递 WHERE Age > @ageParam

等过滤器时,常规参数传递将起作用

如果像我正在尝试的那样(其中值相同,但列发生变化),您应该构建一个表达式,如下面的屏幕截图所示。

我的表达式的值最终是

="Select * from Employee WHERE " & Parameters!employeeField.Value & "= 'foo' "

无法动态更改使用字段名作为参数的查询。 要实现您想要的,您必须构建一个具有多个替代 (OR) 条件的 WHERE 子句:

SELECT top 100 employeePK from Employees 
WHERE (@employeeField = 'Field1' AND Field1 IS NULL)
   OR (@employeeField = 'Field2' AND Field2 IS NULL)
   OR (@employeeField = 'Field3' AND Field3 IS NULL)
   -- ... and so on...