尝试解决SSRS没有显示某些月份的正确结束日期的问题(即,它显示4月份罚款30日,然后显示3月30日,然后28日为2月,28日为1月等)。
我有一个报告,它有一个“按钮”,可以通过将以下代码解析为“enddate”参数表达式(在dateadd中尝试使用毫秒等等,没有正常工作)来回溯到前几个月的数据。
我正在尝试让以下内容正常工作但有错误“文本框'Textbox70'的ActionInfo.Action.Drillthrough.DrillthroughParameters.Value表达式包含错误:[BC30588]省略的参数无法匹配ParamArray参数。“
=SWITCH(format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="January", DateSerial(Year(DateAdd("m",-1,CDate(Parameters!enddate.Value))), Month(DateAdd("m",-1,CDate(Parameters!enddate.Value))), "31"),
format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="March", DateSerial(Year(DateAdd("m",-1,CDate(Parameters!enddate.Value))), Month(DateAdd("m",-1,CDate(Parameters!enddate.Value))), "31"),
format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="April", DateSerial(Year(DateAdd("m",-1,CDate(Parameters!enddate.Value))), Month(DateAdd("m",-1,CDate(Parameters!enddate.Value))), "30"),
format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="May", DateSerial(Year(DateAdd("m",-1,CDate(Parameters!enddate.Value))), Month(DateAdd("m",-1,CDate(Parameters!enddate.Value))), "31"),
format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="June", DateSerial(Year(DateAdd("m",-1,CDate(Parameters!enddate.Value))), Month(DateAdd("m",-1,CDate(Parameters!enddate.Value))), "30"),
format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="July", DateSerial(Year(DateAdd("m",-1,CDate(Parameters!enddate.Value))), Month(DateAdd("m",-1,CDate(Parameters!enddate.Value))), "31"),
format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="August", DateSerial(Year(DateAdd("m",-1,CDate(Parameters!enddate.Value))), Month(DateAdd("m",-1,CDate(Parameters!enddate.Value))), "31"),
format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="September", DateSerial(Year(DateAdd("m",-1,CDate(Parameters!enddate.Value))), Month(DateAdd("m",-1,CDate(Parameters!enddate.Value))), "30"),
format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="October", DateSerial(Year(DateAdd("m",-1,CDate(Parameters!enddate.Value))), Month(DateAdd("m",-1,CDate(Parameters!enddate.Value))), "31"),
format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="November", DateSerial(Year(DateAdd("m",-1,CDate(Parameters!enddate.Value))), Month(DateAdd("m",-1,CDate(Parameters!enddate.Value))), "30"),
format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="December", DateSerial(Year(DateAdd("m",-1,CDate(Parameters!enddate.Value))), Month(DateAdd("m",-1,CDate(Parameters!enddate.Value))), "31"),
)
非常感谢任何帮助。
干杯:)
答案 0 :(得分:0)
首先,语法问题是" 12月"选项以逗号结尾,没有其他参数,因此请删除逗号,该错误应该消失。也就是说,结尾,)
应该只是)
。
获得二月份的结果很奇怪,因为在你的公式中没有2月选项,也没有28天的任何月份,所以我不知道你为什么在28天内获得结果。
另一个问题是VBA不是SQL - 你应该使用VBA语法,所以这个:
format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="January"
成为这个:
MonthName(Month(DateAdd(DateInterval.Month, -1, Parameters!enddate.Value))) = "January"
最后,你的公式不必要地复杂 - 你是在上个月的结束日期之后,所以你可以像这样计算它:
=DateAdd(DateInterval.Day, 0-Day(Parameters!enddate.Value), Parameters!enddate.Value)