我在「SQL Server Reporting Services 2012」上使用「Microsoft SQL Server Report Builder 3.0」。如何使用報表生成器3.0將SQL查詢中的列名作爲參數傳遞
從主報告main.rdl我打電話detail.rdl
鑽取報告main.rdl報告有一個表,該表的每個文本框中點擊,並鑽取操作。當用戶點擊任何文本框時,detail.rdl報告被調用。傳遞給detail.rdl報告的一個參數在SQL中用作列名稱。此SQL提取detail.rdl所需的數據報告
當我運行使用參數構建的detail.rdl報告的SQL查詢時,它不顯示任何錯誤,但也不提取任何數據。我認爲發生的事情是,因爲參數的數據類型爲Text,所以在SQL中用引號替換,這可能導致它無法獲取任何數據。
當我用參數值(不帶引號)替換列名後,直接在數據庫上運行相同的SQL時,它會提取數據。
是否有任何特定的方式來傳遞參數,這些參數將用作我在這裏丟失的列名稱?
SQL,我從報告生成嘗試:
SELECT
table_name.column1
,table_name.column21
,table_name.column15
,table_name.column6
,table_name.column9
,table_name.column2
,table_name.column19
,@column --the value in this variable is an existing column name from table table_name
FROM
table_name
WHERE
table_name.column1 LIKE @company
AND table_name.column21 LIKE @platform
AND (@column is null OR @column = '' OR @column = 'N/A' OR @column = 'Unknown');--I want to use same variable here as well
UPDATE: 我能夠通過行後加入
DECLARE @company varchar(10)
SET @company = ''company_name''
DECLARE @platform varchar(10)
SET @platform = ''platform_name''
獲得SQL工作
SET @SQL =
'
不幸的是「Microsoft SQL Server Report Builder 3.0「無法執行此SQL,因爲它要求獲取變量@SQL的值,即使已定義值。我曾嘗試聲明和設置在同一行@SQL的價值:
DECLARE @SQL varchar(5000) = 'DECLARE @company varchar(10)
但報表生成器仍要求@SQL和報告的值不:-(
的問題是我的錯。參數名是區分大小寫的,所以確保它在任何地方都讀取'@SQL',最後一條語句將其命名爲「@sql」.SSRS也可能在設計器中添加了'@sql'參數,如果可以的話,您可以安全地刪除。 –