SSRS上个月的最后一个工作日vbscript

时间:2018-04-10 21:45:07

标签: reporting-services vbscript ssrs-2008 ssrs-2012

我需要一些帮助来编写上个月最后一个工作日的SSRS表达式。

我尝试了以下内容,它给了我上个月的最后一个日历日,但我需要最后一个工作日。

= DateAdd("d", -1, DateSerial(Year(Now), Month(Now), 1))

=dateadd("d",-1,dateadd("q",datediff("q","1/1/1900",today()),"1/1/1900"))

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以将其分解为两个步骤。 创建一个文本框(让我们称之为endoflastmonth)。

将表达式设置为以下内容:

=DateAdd(DateInterval.Minute, -1, DateSerial(Year(Date.Now), Month(Date.Now), 1))

现在创建另一个文本框并输入以下表达式:

=format(DateAdd("d"
    , Switch(DatePart("w", reportitems!endoflastmonth.Value) = 2, -3
        ,DatePart("w", reportitems!endoflastmonth.Value) = 1, -2
        ,True, -1)
    , reportitems!endoflastmonth.Value),"dd/MM/yyyy")

理论上,您应该在此文本框中显示上个月的最后一个工作日。

第二种格式是以“dd/MM/yyyy”格式获取日期..您可以根据自己的喜好对其进行格式化。

如果你想把它作为参数..你有两个选择..一个是用SQL来获得你想要的值..但是因为你想在表达式中完成它...你可以这样做..我不知道这是不是最好的方式

= DateAdd("d"
    , Switch(DatePart("w", DateAdd(DateInterval.Minute, -1, DateSerial(Year(Date.Now), Month(Date.Now), 1))) = 2, -3
        ,DatePart("w", DateAdd(DateInterval.Minute, -1, DateSerial(Year(Date.Now), Month(Date.Now), 1))) = 1, -2
        ,True, -1)
    , DateAdd(DateInterval.Minute, -1, DateSerial(Year(Date.Now), Month(Date.Now), 1)))