【问题标题】:Visual basic code to show dynamic date range change in SSRS report在 SSRS 报告中显示动态日期范围变化的 Visual Basic 代码
【发布时间】:2020-05-26 15:22:18
【问题描述】:

您好,我在一份 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")

【问题讨论】:

    标签: sql vb.net reporting-services


    【解决方案1】:

    我不确定您是否需要任何 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 日,但参数日期显示为用户选择的日期

    最后,参数日期显示在两个占位符中,即使数据没有延伸到用户选择的范围内。

    【讨论】:

    • 谢谢。我明白你说的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多