1

我在 Visual Studio 中编写了一个报告,该报告采用用户输入参数并针对 ODBC 数据源运行。我想手动编写查询,并让报告服务在将 where 子句发送到数据库之前用参数值替换部分 where 子句。似乎正在发生的事情是,@parmName我假设将被替换的实际上是作为 SQL 语句的一部分发送的。我是否在某处缺少配置设置,或者这根本不可能?

我没有在工具中使用过滤器选项,因为这似乎会从数据库中带回完整的数据集并在 SQL Server 上进行过滤。

4

4 回答 4

5

听起来您需要将 SQL 语句视为表达式。例如:

="Select col1, col2 from table 1 Where col3 = " & Parameters!Param1.Value 

如果 where 子句是字符串,则需要执行以下操作:

="Select col1, col2 from table 1 Where col3 = '" & Parameters!Param1.Value & "'"

重要提示:不要在 SQL 表达式中使用换行符。如果你这样做,你会得到一个错误。

如果您需要更多帮助,请回来。

于 2008-08-12T23:43:15.183 回答
1

ODBC 不使用旧的“?” 参数的语法?试试这个:

select col1, col2 from table1 where col3 = ?

然后参数的顺序变得很重要,但它比简单地附加参数值更不容易受到 SQL 注入的影响。

于 2008-08-21T10:44:08.020 回答
1

尝试通过 ODBC 查询访问数据库时遇到了同样的问题。

我原来的查询:SELECT A.1 FROM A WHERE A.1 = @parameter导致错误。改为:SELECT A.1 FROM A WHERE A.1 = ?

然后,您必须将查询参数与您的报告参数进行映射。

于 2012-05-11T12:49:18.140 回答
0

我对这个问题有点困惑,如果您正在寻找简单的参数用法,那么符号是 : *paramName*,但是如果您想在结构上更改WHERE子句(就像您可能在 sql+ 中使用?)那么您真的应该在其中使用自定义代码报表来定义一个函数,该函数返回查询所需的 sql。

不幸的是,在使用自定义代码时,不能在生成的查询中直接引用参数,而必须将这些值连接到结果字符串中,从而引入了SQL注入的可能性。

于 2008-08-26T16:46:47.437 回答