显示ssrs报表中动态日期范围更改的visual basic代码

ycggw6v2  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(364)

嗨,我在一个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")

但是,我将开始日期和结束日期默认设置为空。预览报表时,此占位符将显示如下内容:

Date Range: -

如果我将开始日期更改为2020年3月1日,结束日期更改为2020年3月31日,则会显示:

Date Range: Sunday, March 1, 2020 - Tuesday, March 31, 2020

如果其中一个或两个都为空,如何更改表达式使默认日期范围从最早的日期到最晚的日期?这是我的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")
3hvapo4f

3hvapo4f1#

我不确定你是否需要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 它将使我们使用找到的第一条或最后一条记录。
那么对于占位符来说,[开始]占位符应该是这样的。

=IIF(
    Parameters!StartDate.Value=Nothing
    ,First(Fields!OrderDate.Value, "DataSet1")
    , Parameters!StartDate.Value
    )

以类似于[结束]占位符的方式

=IIF(
    Parameters!EndDate.Value=Nothing
    ,Last(Fields!OrderDate.Value, "DataSet1")
    , Parameters!EndDate.Value
    )

这将显示选定的开始日期参数或找到的第一条记录(如果未指定参数),结束日期也将显示相同的参数,但显示找到的最后一条记录除外。
最后,我格式化了占位符以显示长日期。
结果是这样的,没有,一个和两个参数都被选中。

(实际数据继续显示到2014年6月30日)我们知道如何将整个数据集的第一个和最后一个订单日期指定为非参数。

这里,2011年5月20日之后的第一个订单日期是7月1日,但参数日期显示为用户选择的日期

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

相关问题