簡體   English   中英

用於在 SSRS 報告中顯示動態日期范圍變化的 Visual Basic 代碼

[英]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 個參數StartDateEndDate

然后我會創建一個類似的數據集(取自 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.

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