代码之家  ›  专栏  ›  技术社区  ›  BIReportGuy

SSRS上月最后一个工作日vbscript

  •  -1
  • BIReportGuy  · 技术社区  · 6 年前

    我需要一些帮助来为上个月的最后一个工作日编写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 回复  |  直到 6 年前
        1
  •  1
  •   Harry    6 年前

    您可以通过将其分解为两个步骤来实现这一点。 创建一个文本框(称为endoflasmonth)。

    将表达式设置为以下值:

    =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)))