Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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_Reporting Services_Sql Server 2012_Reportbuilder3.0 - Fatal编程技术网

Sql 报表生成器可能显示错误

Sql 报表生成器可能显示错误,sql,reporting-services,sql-server-2012,reportbuilder3.0,Sql,Reporting Services,Sql Server 2012,Reportbuilder3.0,我正在“SQL Server Reporting Services 2012”上使用“Microsoft SQL Server Report Builder 3.0” 我从main.rdl主报告调用钻取报告detail.rdl‌ 并将三个参数(@var_1、@var_2和@column)传递给运行detail.rdl main.rdl报告有一个表,该表的每个文本框都可以单击和钻取操作。当用户单击任何文本框时,将调用detail.rdl报告。传递给detail.rdl报告的一个参数在SQL中用作列

我正在“SQL Server Reporting Services 2012”上使用“Microsoft SQL Server Report Builder 3.0”

我从main.rdl主报告调用钻取报告detail.rdl‌ 并将三个参数(@var_1、@var_2和@column)传递给运行detail.rdl

main.rdl报告有一个表,该表的每个文本框都可以单击和钻取操作。当用户单击任何文本框时,将调用detail.rdl报告。传递给detail.rdl报告的一个参数在SQL中用作列名。此SQL获取detail.rdl报表所需的数据

T‌他是:

DECLARE @SQL varchar(max)

SET @SQL =
'SELECT
[table_name].[col_5]
,[table_name].[col_13]
,[table_name].[col_4]
,[table_name].[col_21]
,[table_name].[col_9]
,[table_name].[col_28]
,[table_name].[col_11]
,' + @column + /*the value in this variable is an existing column name from table table_name*/
' FROM
[table_name]
WHERE
([table_name].[col1] LIKE '@var_1')
AND ([table_name].[col2] LIKE '@var_2')
AND (' + @column + ' is null OR ' + @column + ' = '''' OR ' + @column + ' = ''N/A'' OR ' + @column + ' = ''Unknown'')' /*I want to use same column name here as well*/

exec (@SQL)‌‌
W‌运行此查询时,我得到错误:

执行查询时出错。附近语法不正确 “@var_1”。(Microsoft SQL Server报表生成器)‌‌‌

我‌ 由于错误本身信息量不大,我无法找出为什么会出现此错误。
任何关于此错误原因的线索都将非常有用。

错误是正确的,您的代码在语法上是不正确的

您可能需要将代码更改为以下内容:

DECLARE @SQL varchar(max) -- , @column varchar(max), @var_1 varchar(max), @var_2 varchar(max)

SET @SQL =
'SELECT
[table_name].[col_5]
,[table_name].[col_13]
,[table_name].[col_4]
,[table_name].[col_21]
,[table_name].[col_9]
,[table_name].[col_28]
,[table_name].[col_11]
,' + @column + /*the value in this variable is an existing column name from table table_name*/
' FROM
[table_name]
WHERE
([table_name].[col1] LIKE ''%' + @var_1 + '%'')
AND ([table_name].[col2] LIKE ''%' + @var_2 + '%'')
AND (' + @column + ' is null OR ' + @column + ' = '''' OR ' + @column + ' = ''N/A'' OR ' + @column + ' = ''Unknown'')' /*I want to use same column name here as well*/

exec (@SQL)
您需要使用
+
将字符串集中在所有正确的位置