[英]Visual basic code to show dynamic date range change in SSRS report
您好我在一個 SSRS 報告中創建了一個 SSRS 占位符 [日期]。
Date Range: [Date]
而占位符的表達式為:
=Microsoft.VisualBasic.Strings.format(Parameters!start_date.Value, "Long Date") + " - " + Microsoft.VisualBasic.Strings.format(Parameters!end_date.Value, "Long Date")
但是,我將 start_date 和 end_date 默認設置為 Null。 當我預覽報告時,此占位符將顯示如下內容:
Date Range: -
如果我將開始日期更改為 2020 年 3 月 1 日並將結束日期更改為 2020 年 3 月 31 日,那么它將顯示:
Date Range: Sunday, March 1, 2020 - Tuesday, March 31, 2020
如果其中任何一個或兩者都是 Null,我如何更改我的表達式以使默認日期范圍為從最早日期到最新日期? 這是我的Visual Basic代碼,我盡力了,但我沒有很多編程經驗,所以可能不是真的:
=If start date is null
then Microsoft.VisualBasic.Strings.format(min(Fields!arrival_date.Value), "Long Date") + " - " + Microsoft.VisualBasic.Strings.format(Parameters!end_date.Value, "Long Date")
if end date is null
then Microsoft.VisualBasic.Strings.format(Parameters!start_date.Value, "Long Date") + " - " + Microsoft.VisualBasic.Strings.format(max(Fields!arrival_date.Value), "Long Date")
if start date and end date is null
then Microsoft.VisualBasic.Strings.format(min(Fields!arrival_date.Value), "Long Date") + " - " + Microsoft.VisualBasic.Strings.format(max(Fields!arrival_date.Value), "Long Date")
else Microsoft.VisualBasic.Strings.format(Parameters!start_date.Value, "Long Date") + " - " + Microsoft.VisualBasic.Strings.format(Parameters!end_date.Value, "Long Date")
我不確定您是否需要任何 VBA 來完成此操作。 我會這樣做的方式如下。
創建報告。
添加 2 個參數StartDate
和EndDate
然后我會創建一個類似的數據集(取自 sam,[le Adventureworks 數據庫)
SELECT CustomerID, OrderDate, SubTotal
FROM Sales.SalesOrderHeader
WHERE (SubTotal < 100) -- just to reduce the sample data
and
(
(OrderDate >= @StartDate OR @StartDate IS NULL)
AND
(OrderDate <= @EndDate OR @EndDate IS NULL)
)
這將使用提供的日期,或者是NULL
,它將使用找到的第一個或最后一個記錄來求助於我們。
然后對於您的占位符,[Start] 占位符將類似於。
=IIF(
Parameters!StartDate.Value=Nothing
,First(Fields!OrderDate.Value, "DataSet1")
, Parameters!StartDate.Value
)
並以類似的方式 [End] 占位符
=IIF(
Parameters!EndDate.Value=Nothing
,Last(Fields!OrderDate.Value, "DataSet1")
, Parameters!EndDate.Value
)
這將顯示選定的開始日期參數或找到的第一條記錄(如果未指定參數),結束日期相同,除非將顯示找到的最后一條記錄。
最后,我將占位符格式化為長日期。
結果看起來像這樣,沒有選擇一個,一個和兩個參數。
(實際數據持續顯示到 2014 年 6 月 30 日)我們如何指定整個數據集的第一個和最后一個訂單日期,而不是參數。
這里 2011 年 5 月 20 日之后的第一個訂單日期是 7 月 1 日,但參數日期顯示為用戶選擇的日期
最后,參數日期顯示在兩個占位符中,即使數據沒有延伸到用戶選擇的范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.