2009-07-07 100 views
2

我有一個報告,其參數爲StartDateEndDate。我希望EndDate參數的時間部分默認爲從下拉列表中選擇的一天結束時間。Report Builder - 設置日期時間參數

例如,如果用戶從下拉菜單中選擇2008年5月15日,在框中顯示的值應爲「2008年5月15日23點59分59秒」而不是'5/15/2008 12:00:00'

使用事件模型和一行代碼在.Net中執行此操作非常簡單,但在Report Builder 2.0中,我需要做什麼?

是否有我需要爲此編寫的代碼,或者我是否錯過了一些可以處理這個問題的時髦表達式?

謝謝。

AboutDev

+0

哦,並創建一個帶時間值的表格,並且使用它不是一個選項!只是以爲我會提到:-) – AboutDev 2009-07-07 19:07:17

回答

2

自從我使用SSRS以來已經有一段時間了,所以請耐心等待。你必須做一些翻譯,但這是我過去所做的。

當您定義您的EndDate參數時,請在您的參數列表中的EndDate之後創建一個名爲EndDateEOD的附加參數。將此參數設爲隱藏值,並將其設置爲一天中的最後一刻,類似於Jeremy計算它的方式。

然後,您可以在您現在擁有@EndDate的報表查詢中使用@EndDateEOD。

當選擇StartDate時,您可以將EndDate默認爲其值,以便EndDateEOD將自動設置爲開始日期的結尾。

+0

我可以看到這是如何工作,如果你想它基於StartDate的基礎上,但不幸的是,我不能讓它基於EndDate。從事件角度考慮它可能會有所幫助。在EndDate日曆控件的AfterSelect事件中,我想將EndDate控件的DateTime值設置爲:Value = Value +「11:59:59」。 我希望能幫助解決困惑。感謝您嘗試eksortso。 – AboutDev 2009-07-07 19:48:18

1

使用在您的數據集中DATEADD()表達參數。

不是

...WHERE end_date = @end_date 

做這樣的事情:

...WHERE end_date = DATEADD(ms, -3, @end_date + 1) 

這將往前走日(+1),然後回到3毫秒,有一天錄製的最後時刻由一個日期時間。

+0

謝謝你的反饋傑里米。但是,我無法更改數據集的值,因爲時間可以由最終用戶選擇。例如,他們可能希望它是1PM而不是11:59 PM。我只需要在文本框中默認的時間到一天結束。我希望我有道理大聲笑! – AboutDev 2009-07-07 19:20:16

4

我會建議在報表參數部分設置默認參數。你可以從報告>報告參數中找到它。

這允許您設置一個未查詢的默認值。在那裏,您可以輸入一個表達式像

=使用DateAdd(Microsoft.VisualBasic.DateInterval.Second,-1,DATEADD( 「d」,1,今日))

這應該給你的最後一個默認今天。

編輯:真的只對單個默認值有用。

0

你可以做這樣的事情: = CDATE(!參數StartDate.Value +「23:59:59」) 參數的一部分StartDate.Value可以是任何日期,但不是EndDate.Value本身。例如: - 今天() - 從開始日期的月末日期: = CDate(DateSerial(Year(Parameters!StartDate.Value),Month(Parameters!StartDate.Value)+ 1,0)+「23: 59:59「)

希望得到這個幫助。

相關問題