在 SSRS 中设置日期时间异常的格式



我构建了一个 SSRS 报告,该报告结合了两个 int 数据列(即:6 和 2017(,以在 SSRS 报告(即:2017 年 6 月(的一列中形成有效的月份和年份结果,使用以下语句:Format(CDate(Fields!MonthEarnedId.Value & "/" & Fields!YearEarned.Value)

这可以按预期工作,但是该月的某些 int 值的值为 13,该值应表示一年中的所有月份,以便报告中这些值所需的格式为"All 2017"。 我认为如下所示的 IIF 语句会指定排除的必要格式,但是月份值为 13 的行仅显示 #error。 任何建议将不胜感激!

=iif(Fields!MonthEarnedId.Value < 13, Format(CDate(Fields!MonthEarnedId.Value & "/" & Fields!YearEarned.Value), "MMM yyyy"), "All " & Fields!YearEarned.Value)

发生13时,表达式中的问题CDate()。根据 SSRS 中的设计,IIF评估TRUEFALSE两者,在您的情况下,当选择 13 作为MonthEarnedId时,CDate()尝试将13/2017转换为无效MMM yyyy格式并抛出#Error

我建议您在SQL查询中将int转换为month names,并将数据仅在SSRS中连接,但是如果您严格必须在SSRS中执行此操作,那么下面是您必须输入的表达式。

=SWITCH(Fields!MonthEarnedId.Value=1,"Jan"
,Fields!MonthEarnedId.Value=2,"Feb"
,Fields!MonthEarnedId.Value=3,"Mar"
,Fields!MonthEarnedId.Value=4,"Apr"
,Fields!MonthEarnedId.Value=5,"May"
,Fields!MonthEarnedId.Value=6,"Jun"
,Fields!MonthEarnedId.Value=7,"Jul"
,Fields!MonthEarnedId.Value=8,"Aug"
,Fields!MonthEarnedId.Value=9,"Sep"
,Fields!MonthEarnedId.Value=10,"Oct"
,Fields!MonthEarnedId.Value=11,"Nov"
,Fields!MonthEarnedId.Value=12,"Dec"
,Fields!MonthEarnedId.Value=13,"All"
) & " " & CStr(Fields!YearEarned.Value.Value)

您正在将该字段类型强制转换为日期变体以应用格式 在此过程中,还将列的数据类型从字符串更改为日期时间。当呈现器尝试将字符串值"All 2017"转换为相应的日期时间时,会发生此错误。要解决此问题,您需要使用CStr()或其他方式将其转换回字符串子类型。

=iif(Fields!MonthEarnedId.Value < 13, CStr(Format(CDate(Fields!MonthEarnedId.Value & "/" & Fields!YearEarned.Value), "MMM yyyy")), "All " & Fields!YearEarned.Value)

最新更新