SSRS: Month Date Expression in Header Text Box - ssrs-2012

I have the following Expression in the Header of a report and while the report is working fine, the expression returns #ERROR... 'Argument Month is not a valid value.'
= IIF
(
Month(Today) = 1,
"December, " & Year(Today) -1,
MonthName(Month(Today) -1) & ", " & Year(Today)
)
In January, I want the Text Box to display "December" & the Previous Year.
For all other months, I want to display the current Month Name and the current Year.
I would appreciate any help or pointers.
Thanks!!

I probably should have worked harder before posting my question but it was urgent and I wasn't sure I'd be able to find an answer.
This is how I was able to solve the problem:
= IIF
(
Month(Today) = 1,
MonthName(Month(DateAdd("M",-1,Today))) & " " & Today.AddYears(-1).Year,
MonthName(Month(DateAdd("M",-1,Today))) & " " & Today.AddYears(0).Year
)
Thanks!

You were close, I think this should work
=IIF(Month(Today) = 1, "December, " & Year(Today) -1, MonthName(Month(Today)) & ", " & Year(Today))

Related

How to save file in vbscript with previous date

I am trying to save excel file with previous date in vbscript.
Fill has been save but date format not like 5-Jun-2019.
Please help me..
MyDateFormat = Year(now) & Right("0" & Month(Now), 2) & Right("0" & Day(now)-1, 2)
wbm.SaveAs "C:\report " & MyDateFormat & ".xlsx"
Expected Actual Result like:5-Jun-2019
date-1 gives yesterday "05.06.2019" in my case, this will not let you encounter day = 00, rest should be done by formatting

How does the DateAdd function in ASP Classic work with the "ww" weeks option?

I have to replicate functionality in C# from an old asp classic codebase.
The codebase seems to assume that the year can have up to 54 weeks and uses the DateAdd method with the "ww" option to figure out the "week ID" for purposes of categorising some files.
All of the online documentation I have found seems to ignore this question and a straightforward reading of it suggests that adding weeks is the same as adding (weeks * 7) days, however, I don't want to break backwards compatibility. I think that the old code has an off by one error but I don't want to assume it. It's possible for a year to have its days in 54 different weeks but I don't think that doing a DateAdd with a value greater than 52 ever makes sense.
My question is, how does the
DateAdd("ww", x, date)
work?
Is it the equivalent of
date.AddDays(7 * x)
in C#?
Are there edge cases where the first of January falls on (for example) a Saturday and DateAdd("ww", 53, date) could return a valid date in the same year?
I can tell you that DateAdd("ww", i, date) is equivalent to DateAdd("d", 7*i, date); therefore, provided that both functions in C# and vbScript have the same meaning, they must be equivalent.
To ensure DateAdd("ww", i, date) is equivalent to DateAdd("d", 7*i, date) I used the script bellow, it cycles 2 years and for each day, it cycles for 104 weeks if adding days or adding weeks mismatch somehow, it raises an error.
date0 = Date()
For i = 0 to 2 * 365
date1 = DateAdd("d", i, date0)
For j = 0 to 2 * 53
date2 = DateAdd("d", j * 7, date1)
date3 = DateAdd("WW", j, date1)
assert = DateDiff("s", date2, date3)
If assert <> 0 Then
errMsg = _
"OPS addDays And addWeeks unmatched" &_
vbCrLf &_
CStr(date1) & vbTab &_
CStr(date2) & vbTab &_
CStr(date3) & vbTab &_
assert & vbTab
Call Err.Raise(vbObjectError + 10, "Test DateAdd(""ww"", i, date)", errMsg)
End If
Next
Next
So I guess you can use date.AddDays(7 * x) to replace DateAdd("ww", x, date) with no concerns in mismatching dates.

Label Expression Frustration

I have a two label fields, [field1] & [field2] I want to display on my map.
I want them to be on two separate lines with the bottom one in bold and in a different color and adding mg/L after the value. The bottom label also needs to all fit on one line despite it being too long, arcmap is currently separating them. I have only written this much:
"" & [field1] & "" & vbnewline & "" & FormatNumber(Round( [field2] , 0),0) & " mg/L" & ""
When I add more I cant seem to get it right and lots of errors come up.
Sorry for late reply, Try to put your field2 text in these tags in label expression it will change the color and will bold your text
"<BOL>"& "<CLR red= '100'>" & [field2] & "</CLR>"&"</BOL>"
something like:
"" & [field1] & "" & vbnewline & "<BOL>"&"<CLR red= '100'>" & FormatNumber(Round( [field2] , 0),0) & " mg/L" & "</CLR>"&"</BOL>"

Getting Microsoft VBScript runtime error '800a0009' on Checkout Cart

I'm really not very familiar with ASP, but the site I'm managing is spitting that error out to me. Here is the full code from the site:
Microsoft VBScript runtime error '800a0009'
Subscript out of range: '[number: 1]'
/shopping_sub.asp, line 715.
Here is the code from 697-728:
'Response.write strPass & "<p>"
'Response.write "Response: " & strResp
'Response.end
If strResp="ERROR" then
RESULT_num_shipping_options = -1
Session("ShipErrMsg")="To continue your order, please contact customer service regarding your contact information. Thank you."
Else
RESULT_num_shipping_options=1
vResp=Split(strResp,":")
Dim RESULT_shipping_description_array(4)
Dim RESULT_shipping_amount_array(4)
For I = 0 to UBound(vResp)
vResp2=Split(vResp(I),"|")
RESULT_shipping_description_array(I)=vResp2(0)
RESULT_shipping_amount_array(I)=vResp2(1)
Next
End If
Else
RESULT_num_shipping_options = -1
cShipping=0
End If
End If
'Response.write "Weight: " & siWeight & "<br/>"
'Response.write "Zip: " & receiverpostalcode & "<br/>"
'Response.write "Country: " & receivercountrycode & "<br/>"
It appears to start functioning after 7 items have been added to the cart, but anything less than that returns errors.
This doesn't happen with all products, so any idea?
Have you used a debugger to determine the value of vResp and the array length of vResp2?
My guess is that the response is not what you expected. If you can't force the api to always have the correct response, then you'll want to protect against it by checking the length of the split response before trying to access the value.
Another problem I see that is unrelated, is that if the UBound(vResp)_ > 4, then you'll get a similar error

Having the day value of date start with 0

I am editing a VBScript so it will take yesterdays date add a string to the front off it and search for that file before moving it to a folder.
sDate = day(date)-1
sName= "Blaa" & "_" & sDate
Using the above bits of code I would get a result - Blaa_10 or Blaa_9
The issue is the files, I want it to search for when under 10 would be named as Blaa_09.
Is there anyway I can format the value day so when it is under 10 it starts with 0? Think I could write an If statement to do this but was hoping there is another way.
The canonical way to left-pad a day of month with a zero in VBScript looks like this:
Right("0" & Day(Date), 2)
Just went with
sDay = day(date) -1
IF sDay < 10 Then
sDate = "0"& sDay & monthname(month(DateAdd("m",-1,Date)), True) & year(date)
WScript.Echo "Date = " & sDate
This worked fine, if anyone has an easier way please feel free to share.

Resources