2012-10-26 48 views
1

甚至不顯示我有一個查詢填寫報表參數:SSRS參數雖然查詢工作

select distinct [Source No_] from _report_sales_master 
where [Industry] = @Industries 
and [posting date] >= dateadd(year,datediff(year,'01/06/2000',@year)-1,'01/06/2000') 
and [posting date] < dateadd(year,datediff(year,'01/06/2000',@year),'01/06/2000') 
order by [Source No_] 

查詢結果列表中,我用它來填充多值報表參數。

當我運行查詢時,它會生成正確的結果。

當我運行的報告,「源NO_」參數保持爲空,無論哪個@year或@industries我選擇

當我從查詢,參數列表填充刪除「發佈日期」條款並正常工作。

我錯過了什麼?

回答

0

試着把你的硬編碼日期(字符串文字)的格式爲'yyyy-mm-dd'。我已經找到了將日期格式化爲日期的格式,例如dd/mm/yyyy或mm/dd/yyyy,SSRS可以混合使用,哪些是月份,哪些是日期。

我已經在日期本地化的db和SSRS級別上使用過各種設置,並且發現格式中的任何日期字符串都會導致問題(我不知道具體原因)。

由於您使用的是字符串文字,因此會執行一個隱式轉換以將其轉換爲以下值之一: time, date, smalldatetime, datetime, datetime2datetimeoffset值。

另一種方式來防止日期畸形是更換您的字符串字面量有明確的轉換,例如:

  • CONVERT(datetime, '2012-06-01', 101)假設月=月
  • CONVERT(datetime, '2012-01-06', 101)假設月=月

的我只能想到的其他事情是檢查報告中的參數設置爲[Source No_]列的正確數據類型。

0

在你的數據庫將這個和玩:

DECLARE @year DATETIME 
SELECT @year = TypeDateTimeInputHere 
SELECT dateadd(year,datediff(year,'01/06/2000',@year)-1,'01/06/2000') [GT posting date] 
,dateadd(year,datediff(year,'01/06/2000',@year),'01/06/2000') [LT posting date] 

我不能告訴你想比你的大於或等於(GT)和你的小於(LT)的邏輯做什麼,但我不認爲它符合你的期望或想要的。每次我測試它,我都會得到相同的結果,除非我強制[發佈日期]小於1/6/2000。

很明顯,將「TypeDateTimeInputHere」替換爲您知道或期望在[發佈日期]中的樣本值。