我的公式是:
=IIF(Parameters!Month.Value="12",(DateValue("1" & "/" & Parameters!Year.Value+1)),(DateValue(Parameters!Month.Value+1 & "/" & Parameters!Year.Value)))
答案 0 :(得分:2)
我会考虑使用DateAdd
和DateSerial
。
所以表达如下:
=DateAdd(DateInterval.Month
, 1
, DateSerial(Parameters!Year.Value, Parameters!Month.Value, 1))
这使用DateSerial
构建所选年和月的第一个月,然后使用DateAdd
添加另一个月此
我在测试表达式的基本报告上工作得很好:
答案 1 :(得分:0)
我不承认DateValue(),但你不是要包括日期,月份和年份吗?
=IIF(Parameters!Month.Value="12",(DateValue("1/1/" & Parameters!Year.Value+1)),(DateValue(Parameters!Month.Value+1 & "/1/" & Parameters!Year.Value)))
您还可以使用CDate(datestring)将字符串转换为日期。请参阅SSRS Expressions和Type Conversion Functions。
答案 2 :(得分:0)
IIf和Switch始终会评估所有路径,因此对于12月的这一部分公式
DateValue(Parameters!Month.Value+1 & "/" & Parameters!Year.Value)
失败,因为Parameters!Month.Value + 1将为13,并且没有第13个月。 为了避免这种情况,您必须将该部分更改为以下内容:
DateValue(IIf(Parameters!Month.Value<12,Parameters!Month.Value+1,12) & "/" & Parameters!Year.Value)
它将永远不会在12月显示,但仍会进行评估。