2014-01-14 74 views
0

我正在嘗試學習如何使用Reporting Services,並且一直在使用我已導出我想要的項目。我已經增強它使用一個過濾變量,並試圖將一個變量添加到數據集查詢中。使用日期時間選擇器傳遞日期時間參數到SSRS中的文本查詢

這是我遇到麻煩的地方。以下是我的查詢工作正常。

DECLARE @reqDateTime VARCHAR(16), @TSQL nvarchar(4000) 
SET @reqDateTime = '2014-01-14' 

SET @TSQL = 'select convert(datetime, ''<<date>>'') Timestamp, <<other Columns>> 
from openquery 
(<<server>>, ''SELECT ...etc...'') 
order by <<other Columns>>' 

SET @TSQL = REPLACE(@TSQL, '<<date>>', @reqDateTime) 

exec (@TSQL) 

但是,當我改變它並設置屬性中的參數,我得到一個錯誤。

代碼:

DECLARE @reqDateTime VARCHAR(16), @TSQL nvarchar(4000) 
SET @reqDateTime = @filterByDateTime 

SET @TSQL = 'select convert(datetime, ''<<date>>'') Timestamp, <<other Columns>> 
from openquery 
(<<server>>, ''SELECT ...etc...'') 
order by <<other Columns>>' 

SET @TSQL = REPLACE(@TSQL, '<<date>>', @reqDateTime) 

exec (@TSQL) 

參數名稱:@filterByDateTime

參數值:[@AsAt]

非常重要的是,我路過一個時間的日期時間爲好,這是基於這個數據集:

select dateadd(mi, datediff(mi, 0, getdate()) - (datediff(mi, 0, getdate()) % 5), 0) [DefaultDateTime] 

這將返回類似的東西5分鐘增量):2014-01-14 17:25:00.000

當我設計查詢並彈出式窗口要求默認值@filterByDateTime時,我將它設置爲'2014-01-14 05:25: 00 PM「,查詢運行並獲取行名稱。

當運行在製造商的報告,雖然我得到這個消息:

For more information about this error navigate to the report server on the local server machine, or enable remote errors 
---------------------------- 
Query execution failed for dataset 'MainDataSet'. (rsErrorExecutingCommand) 
---------------------------- 
An error has occurred during report processing. (rsProcessingAborted) 

我在做什麼錯在這裏?

回答

1

我已經解決了這個問題。這是因爲查詢通過openquery傳遞到的Oracle服務器需要使用格式指定的日期。這是通過對參數表達式的這種改變解決的:

=year(Parameters!AsAt.Value) & "-" & Right("00" & Month(Parameters!AsAt.Value), 2) & "-" & Right("00" & Day(Parameters!AsAt.Value), 2) & " " & Right("00" & Hour(Parameters!AsAt.Value), 2) & ":" & Right("00" & Minute(Parameters!AsAt.Value), 2)