简体   繁体   中英

Previous Date SSRS Fix

Trying to solve issue with SSRS not showing proper end dates for certain months (ie it shows 30th for april fine, then shows 30th for march and then 28th for feb as well as 28th for jan, etc, etc).

I have a report that has a "button" that goes back to previous months data by parsing the following code as the "enddate" parameter expression (have tried using milliseconds in the dateadd, etc etc nothing working correctly).

I'm trying to get the following to work but have error "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"), )

Any help would be greatly appreciated.

Cheers :)

Firstly, the syntax issue is that that the "December" option ends with a comma with no additional parameters so remove the comma and that error should go away. That is, the ending ,) should just be ) .

Getting a result for February is strange because there is no February option nor any months that are 28 days long in your formula so I don't know why you are getting results with 28 days either.

Another issue is that VBA isn't SQL - you should use VBA syntax, so this:

format(DateAdd("m",-1,CDate(Parameters!enddate.Value)),"MMMM")="January"

becomes this:

MonthName(Month(DateAdd(DateInterval.Month, -1, Parameters!enddate.Value))) = "January"

Finally, your formula is unnecessarily complex - you are after the end date of the prior month so you can just calculate it like so:

=DateAdd(DateInterval.Day, 0-Day(Parameters!enddate.Value), Parameters!enddate.Value)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM