2016-01-20 48 views
0

我已經搜索了所有可找到的關於「我無法設置數據集的命令文本」錯誤的帖子,以及用戶建議,仍然導致這個錯誤對我來說。從MYSQL獲取數據時無法設置SSRS 2008 R2中數據集錯誤的命令文本

我在SSRS 2008R2中工作,並通過ODBC連接到MYSQL連接。

="SELECT case when tranHour between '00' and '03' 
     then DATE_format(DATE_SUB(trandate,INTERVAL 1 DAY), '%Y-%m-%d') 
     else DATE_format(trandate, '%Y-%m-%d') 
     end as WorkDay, 
     case when tranHour between '03' and '15' then 'AM' 
     else 'PM' 
     end as Shift, 
     'Station1' AS Station, 
     count(*) as 'Scans', 
     ROUND(SUM(elapsed_seconds)/60/60,2) as 'Hours', 
     ROUND(count(*)/(SUM(elapsed_seconds)/60/60),2) as 'Scans/Hour', 
     season 
FROM data_lite.master_lite_134_301 
where SEASON IN ('" + join(Parameters!ReportParameter1.Value,"','") + "') 
group by WorkDay, Shift 
ORDER BY DATE_format(WorkDay, '%Y-%m-%d') DESC" 

每次我得到這個錯誤...

錯誤本地報表處理過程中發生。 無法設置數據集'AMPM'的命令文本 處理數據集'AMPM'的CommandText表達式時出錯

如果我用實際值替換參數,它運行良好。

其中SEASON = '15F',它運行

所以, 與其中季節( ' 「+參加(參數!ReportParameter1.Value,」', ' 「)+」'),它會這個錯誤

+0

感謝您的格式更正genespos。同樣的錯誤仍然在發生。 –

+0

如果你的SQL被硬編碼爲'SEASON IN('15F','15S')' –

回答

0

更改CASE

SELECT case when (tranHour between '03' and '15') then 'AM' 
     else 'PM' 
     end CASE as Shift; 

所以

="SELECT case when tranHour between '00' and '03' 
     then DATE_format(DATE_SUB(trandate,INTERVAL 1 DAY), '%Y-%m-%d') 
     else DATE_format(trandate, '%Y-%m-%d') 
     end as WorkDay, 
     case when (tranHour between '03' and '15') then 'AM' 
     else 'PM' 
     end CASE as Shift, 
     'Station1' AS Station, 
     count(*) as 'Scans', 
     ROUND(SUM(elapsed_seconds)/60/60,2) as 'Hours', 
     ROUND(count(*)/(SUM(elapsed_seconds)/60/60),2) as 'Scans/Hour', 
     season 
FROM data_lite.master_lite_134_301 
where SEASON IN ('" + join(Parameters!ReportParameter1.Value,"','") + "') 
group by WorkDay, Shift 
ORDER BY DATE_format(WorkDay, '%Y-%m-%d') DESC" 
+0

你的SQL是否工作謝謝但是沒有解決它。 –

0

您必須將Query參數與相應的Report參數進行映射。

Dataset properties轉到Parameters選項卡,映射查詢參數的名稱與報告參數的名稱。

enter image description here

現在,在您的查詢,你可以使用參數以這種方式 - 只有當它是一個多值參數。

SELECT case when tranHour between '00' and '03' 
     then DATE_format(DATE_SUB(trandate,INTERVAL 1 DAY), '%Y-%m-%d') 
     else DATE_format(trandate, '%Y-%m-%d') 
     end as WorkDay, 
     case when tranHour between '03' and '15' then 'AM' 
     else 'PM' 
     end as Shift, 
     'Station1' AS Station, 
     count(*) as 'Scans', 
     ROUND(SUM(elapsed_seconds)/60/60,2) as 'Hours', 
     ROUND(count(*)/(SUM(elapsed_seconds)/60/60),2) as 'Scans/Hour', 
     season 
FROM data_lite.master_lite_134_301 
where SEASON IN (@QueryYearParameter) 
group by WorkDay, Shift 
ORDER BY DATE_format(WorkDay, '%Y-%m-%d') DESC 

Parameter Name財產,我在查詢中使用的參數是 相同。

讓我知道這是否對你有幫助。

+0

謝謝但不是,那也沒有解決它。儘管我已經弄清楚了。謝謝 –