2017-05-11 5 views
-1

"SQL Server Reporting Services 2012"で "Microsoft SQL Server Report Builder 3.0"を使用しています。メインレポートのmain.rdlから おそらく不正確なエラーを示すレポートビルダー

私はドリルスルーレポートのdetail.rdlを呼び出し、main.rdlレポートがありdetail.rdl

を実行するために(@ VAR_1、@ VAR_2と@column)3つのパラメータを渡していますこのテーブルの各テキストボックスはクリック可能で、ドリルスルー操作が可能です。ユーザーが任意のテキストボックスをクリックすると、detail.rdlレポートが呼び出されます。 detail.rdlレポートに渡される1つのパラメータは、SQLの列名として使用されます。このSQLは、detail.rdlレポートに必要なデータをフェッチします。

SQLは次のとおりです。

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)‌‌ 

私はこのクエリを実行すると、私はエラーを取得する:

An error occurred while executing the query. Incorrect syntax near '@var_1'. (Microsoft SQL Server Report Builder)‌‌‌

エラー自体は非常にではないとして、私はこのエラーを取得していますなぜ私は見つけることができません有益な このエラーの原因となる可能性のある手がかりは非常に役に立ちます。

答えて

2

エラーは正しいです、あなたのコードは構文的に間違っています。

多分、あなたはこのような何かにあなたのコードを変更する必要があります。

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) 

あなたはすべての右の場所で一緒に文字列をCONCATする+を使用する必要があります。

関連する問題