我的客户的会计年度从11月开始。 我使用以下表达式对财务月份类别进行排序:
=Month(
DateAdd(
DateInterval.Month,
-10,
CDate(
Fields!FiscalMonth.Value + ", 01 1900"
)
)
)
它工作正常,直到我不得不将上一年的最终价值添加到该类别。我认为用这样的表达式排序是微不足道的:
=Iif(
Fields!FiscalMonth.Value = "YearEnd",
0,
Month(
DateAdd(
DateInterval.Month,
-10,
CDate(
Fields!FiscalMonth.Value + ", 01 1900"
)
)
)
)
但它在Conversion from string "YearEnd, 01 1900" to type 'Date' is not valid
值上抛出错误YearEnd
。这应该是不可能的,因为Iif
应该保护其第二个参数。我怎样才能确保为'YearEnd'分配0排序顺序?
更新
即使使用以下表达式,也会发生错误:
=Iif(
Fields!FiscalMonth.Value = "YearEnd",
0,
CDate(
Fields!FiscalMonth.Value + ", 01 1900"
)
)
但
不会发生=Iif(
Fields!FiscalMonth.Value = "YearEnd",
0,
Fields!FiscalMonth.Value + ", 01 1900"
)
对我而言,听起来SSRS在评估CDate()
第一个参数之前评估Iif()
。一个错误。
答案 0 :(得分:0)
这有效:
=Iif(
Fields!FiscalMonth.Value = "YearEnd",
0,
Month(
DateAdd(
DateInterval.Month,
-10,
CDate(
Iif(Fields!FiscalMonth.Value = "YearEnd", "November", Fields!fiscalmonth.Value) + ", 01 1900"
)
)
)
)
有谁知道我怎么能在微软尖叫:如果第一个参数评估为'假'则不要评估Iif的第二个参数如果第一个参数评估为“真”则不评估3D参数? 强>