Sql server 对ODBC数据源使用MS Reporting Services(SQL Server 2008)中的参数

Sql server 对ODBC数据源使用MS Reporting Services(SQL Server 2008)中的参数,sql-server,visual-studio,sql-server-2008,reporting-services,odbc,Sql Server,Visual Studio,Sql Server 2008,Reporting Services,Odbc,我在VisualStudio中编写了一个报告,该报告接受用户输入参数并针对ODBC数据源运行。我希望手动编写查询,并让reporting services在将其发送到数据库之前用参数值替换where子句的一部分。似乎正在发生的是,我假设将被替换的@parmName实际上是作为SQL语句的一部分发送的。我是否缺少某个配置设置,或者这根本不可能 我没有在工具中使用filter选项,因为这似乎会从数据库中带回完整的数据集,并在SQL Server上进行筛选。听起来您需要将SQL语句视为一个表达式。例如

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


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

听起来您需要将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表达式中使用换行符。如果你这样做,你会得到一个错误


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

听起来您需要将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表达式中使用换行符。如果你这样做,你会得到一个错误


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

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

select col1, col2 from table1 where col3 = ?

因此,参数的顺序变得很重要,但与简单地追加参数值相比,SQL注入更容易受到攻击。

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

select col1, col2 from table1 where col3 = ?

因此,参数的顺序变得很重要,但与简单地追加参数值相比,SQL注入更容易受到攻击。

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


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

我对这个问题有点困惑,如果您正在寻找简单的参数用法,那么表示法是:*paramName*,但是如果您希望像在sql+using中那样在结构上更改WHERE子句,那么?然后,您应该在报表中使用自定义代码来定义一个函数,该函数返回查询所需的sql


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

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

我的原始查询:从A.1=@参数导致错误的位置选择A.1。改为:从A.1=


然后必须将查询参数与报表参数映射。

在尝试通过ODBC查询access数据库时遇到相同的问题

我的原始查询:从A.1=@参数导致错误的位置选择A.1。改为:从A.1=

然后,您必须将查询参数映射到报表参数