我已经建立了一份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)
答案 0 :(得分:1)
CDate()
发生时,表达式中的问题为13
。根据SSRS中的设计,IIF
评估TRUE
和FALSE
两者,在您选择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)