上一个日期 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)
尝试解决 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)