1

在 SSRS 中,我试图返回一个 DateValue,它是所选月/年之后下个月的第一天。一切都适用于我的公式,除非我尝试在 12 月份进行评估。该公式适用于所有其他月份(例如,对“4”进行评估会产生 1/1/(所选年份 +1)的输出),但 12 月每次都会返回 #Error。

我的公式是:

=IIF(Parameters!Month.Value="12",(DateValue("1" & "/" & Parameters!Year.Value+1)),(DateValue(Parameters!Month.Value+1 & "/" & Parameters!Year.Value)))
4

3 回答 3

2

我会考虑使用DateAddand DateSerial

所以像这样的表达式:

=DateAdd(DateInterval.Month
  , 1
  , DateSerial(Parameters!Year.Value, Parameters!Month.Value, 1))

DateSerial用于为选定的YearMonth构造月份的第一个月,然后用于DateAdd添加另一个月份。

在我为测试表达式而制作的基本报告上工作得很好:

在此处输入图像描述

在此处输入图像描述

于 2013-05-16T18:29:11.440 回答
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 表达式类型转换函数

于 2013-05-16T14:15:47.663 回答
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 月显示,但仍会被评估。

于 2019-06-11T13:16:29.413 回答