簡體   English   中英

即使查詢有效,SSRS參數也不會顯示

[英]SSRS Parameter doesn't display even though the query works

我有一個查詢來填充報告參數:

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_]

該查詢產生一個列表,我使用該列表來填充多值報表參數。

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

運行報表時,無論我選擇哪個@year或@industries,“ Source No_”參數都保持為空

當我從查詢中刪除“發布日期”子句時,參數列表將填充並正常工作。

我想念什么?

嘗試將硬編碼的日期(字符串文字)格式為'yyyy-mm-dd' 我發現以日期格式(即dd / mm / yyyy或mm / dd / yyyy)放置SSRS時,可能會混淆哪個月份和哪個日期。

我已經在數據庫和SSRS級別上進行了各種設置來進行日期本地化,並且發現您格式的任何日期字符串都可能導致問題(我不知道具體原因)。

當您使用字符串文字時,將執行隱式轉換以將其解析為以下之一: time, date, smalldatetime, datetime, datetime2datetimeoffset值。

防止日期格式錯誤的另一種方法是用顯式強制轉換替換字符串文字,例如:

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

我唯一想檢查的另一件事是,報表中的參數設置為[Source No_]列的正確數據類型。

將其放入您的數據庫中,然后玩:

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)邏輯,但是我不認為它可以滿足您的期望或期望。 每次測試時,除非我強制[發布日期]小於2000年6月6日,否則我將獲得相同的結果。

顯然,將“ TypeDateTimeInputHere”替換為您知道的或預計在[發布日期]中的示例值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM