SSRS中的格式日期时间异常

时间:2017-07-31 19:13:50

标签: sql-server datetime reporting-services ssrs-2012

我已经建立了一份SSRS报告,该报告结合了两个int列数据(即:6& 2017),使用以下声明在SSRS报告(即:2017年6月)的一列中形成有效的月份和年度结果: BookObject

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

07-31 22:40:38.308 15567-15567/com.example.android.booktrade_v10 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                               Process: com.example.android.booktrade_v10, PID: 15567
                                                                               com.google.firebase.database.DatabaseException: Found two getters or fields with conflicting case sensitivity for property: authors
                                                                                   at com.google.android.gms.internal.zh.zzhe(Unknown Source)
                                                                                   at com.google.android.gms.internal.zh.<init>(Unknown Source)
                                                                                   at com.google.android.gms.internal.zg.zzf(Unknown Source)
                                                                                   at com.google.android.gms.internal.zg.zzb(Unknown Source)
                                                                                   at com.google.android.gms.internal.zg.zza(Unknown Source)
                                                                                   at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
                                                                                   at com.example.android.booktrade_v10.CatalogActivity$1.onDataChange(CatalogActivity.java:40)
                                                                                   at com.google.android.gms.internal.to.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.vj.zzHX(Unknown Source)
                                                                                   at com.google.android.gms.internal.vp.run(Unknown Source)
                                                                                   at android.os.Handler.handleCallback(Handler.java:751)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                   at android.os.Looper.loop(Looper.java:154)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:6316)
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

2 个答案:

答案 0 :(得分:1)

CDate()发生时,表达式中的问题为13。根据SSRS中的设计,IIF评估TRUEFALSE两者,在您选择13为MonthEarnedId的情况下,CDate()会尝试转换13/2017 {1}} MMM yyyy格式的{1}}无效并抛出#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)

答案 1 :(得分:0)

您正在将该字段类型强制转换为日期变体,以便在执行此操作时应用格式,您还要将列的数据类型从字符串更改为datetime。当渲染器尝试转换字符串值时会发生错误&#34;所有2017&#34;进入相应的日期时间。要解决此问题,您需要使用CStr()或其他方式将其强制转换为字符串子类型。

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