上一个日期 SSRS 修复

Previous Date SSRS Fix

尝试解决 SSRS 未显示特定月份正确结束日期的问题(即它显示 4 月 30 日正常,然后显示 3 月 30 日,然后 2 月 28 日以及 1 月 28 日,等等)。

我有一份报告,其中有一个 "button" 可以通过将以下代码解析为 "enddate" 参数表达式来回溯到前几个月的数据(已尝试在 dateadd 等中使用毫秒等工作正常)。

我正在尝试使以下内容正常工作,但出现错误 "The ActionInfo.Action.Drillthrough.DrillthroughParameters.Value expression for the text box ‘Textbox70’ contains an error: [BC30588] Omitted argument cannot match a ParamArray parameter."

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

如有任何帮助,我们将不胜感激。

干杯:)

首先,语法问题是 "December" 选项以逗号结尾且没有附加参数,因此删除逗号后错误应该会消失。也就是说,结尾 ,) 应该只是 ).

得到二月的结果很奇怪,因为你的公式中没有二月选项,也没有任何月份是 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)