Sql 传递列名时报表参数不起作用
我的报告的目的是检查参数为给定列名的空值 问题是它没有将我的参数从报表传递到数据集。我有一个名为@employeeField的报告参数。在数据集的参数部分,我将ParameterName设置为@employeeField,将value设置为[@employeeField] “我的数据集”的查询示例: 从@employeeField为空的员工中选择前100名employeePK 这也是我在运行时将文本框设置为=dataset时它的计算结果!dsDetails.CommandText此外,如果我输入无效的列名作为参数,则报告将正常执行。我本以为它会出错,但事实并非如此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此外,如果我输入
感谢您的任何意见-如果需要更多的澄清,我可以编辑/评论找到了一个解决方案-但如果是正确的,则不是积极的 我认为如果一个人试图动态地构建他们的查询,就有必要使用表达式 当您传递诸如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...