SSRS 中的格式日期时间异常

Format Date Time Exception in 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)

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

=iif(Fields!MonthEarnedId.Value < 13, CStr(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)