传递列名时报告参数不起作用
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...
我的报告的目的是检查以给定列名作为参数的空值。
问题是它没有将我的参数从报表传递到数据集。我有一个名为 @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...