Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 传递列名时报表参数不起作用_Sql_Sql Server_Reporting Services_Ssrs 2012 - Fatal编程技术网

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

Sql 传递列名时报表参数不起作用,sql,sql-server,reporting-services,ssrs-2012,Sql,Sql Server,Reporting Services,Ssrs 2012,我的报告的目的是检查参数为给定列名的空值 问题是它没有将我的参数从报表传递到数据集。我有一个名为@employeeField的报告参数。在数据集的参数部分,我将ParameterName设置为@employeeField,将value设置为[@employeeField] “我的数据集”的查询示例: 从@employeeField为空的员工中选择前100名employeePK 这也是我在运行时将文本框设置为=dataset时它的计算结果!dsDetails.CommandText此外,如果我输入

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

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

“我的数据集”的查询示例:

从@employeeField为空的员工中选择前100名employeePK

这也是我在运行时将文本框设置为=dataset时它的计算结果!dsDetails.CommandText此外,如果我输入无效的列名作为参数,则报告将正常执行。我本以为它会出错,但事实并非如此


感谢您的任何意见-如果需要更多的澄清,我可以编辑/评论

找到了一个解决方案-但如果是正确的,则不是积极的

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

当您传递诸如WHERE Age>@ageParam之类的过滤器时,常规参数传递将起作用

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

我表达的价值最终是

=从员工所在位置选择*&参数!employeeField.Value&='foo'


无法使用字段名作为参数动态更改查询。 要实现所需,您必须构建一个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...