今天在写报表时遇到个非常奇怪的问题,同一个列的同一个表达式显示结果完全不同,而且显示的还是错误号(意思是表达式错误或者发生了语法问题),我的表达式是这样的,有点长
=IIf(IsNothing(Fields!sfdhl_qr_oppocssquestion1.Value),"",IIf(Int(Fields!sfdhl_qr_oppocssquestion1.Value)>=9 and Fields!sfdhl_oppocssbusinessfitsubanswertext.Value Like "*264270001*","+",IIf(Int(Fields!sfdhl_qr_oppocssquestion1.Value)<9 and Fields!sfdhl_oppocssbusinessfitsubanswertext.Value Like "*264270001*","-","NA")))
就是通过Score那列是否有值来执行不同的逻辑显示不同的值,我在开头已经判断了IsNothing,也就是说只要是空的,都不会执行后面的Int转化,按理说不存在问题,当Score有值是并没有报错,这点上让我很肯定的是,表达式的写法没问题。
最后发现是Int转化的问题,写代码习惯了默认Int就是转化,而在Repoting Service里,Int转化的表达式是CInt,而Int是计算,很久不做报表生疏了,折腾了我好几个小时。
下面附上报表里对Int和CInt的解释