我在MS-access
中有一张表格,如下所示:
此列的格式为ShortText
当我想在报表设计器中使用它时,我想将其编号转换为只有2位十进制数,我使用以下表达式执行此操作:
=IIF(isNumeric(Fields!Val.Value),FormatNumber(Fields!Val.Value,2),(Fields!Val.Value))
此代码在数字变量中执行我想要的操作但不是获取> 305
我得到#Error
问题出在哪里?
答案 0 :(得分:1)
在Access中,即使不是返回结果的表达式,也必须能够评估IIf()中的所有表达式。字符串'> 305'上的FormatNumber()错误并导致IIf()返回错误。这里真正的问题是糟糕的设计。数字数据应位于数字类型字段中。
使用了多少种比较运算符或其他非数字字符?是否< =,> =,<比较运算符?您的代码必须提取前缀字符(如果它们存在)。在操纵字符串时,结构的一致性至关重要。如果前缀始终只是'>':
= IIf(IsNumeric([Val]),FormatNumber(替换([Val],&#34;&gt;&#34;,&#34;&#34;),2),[Val])< / p>
否则,可能需要VBA中的自定义功能。
注意:Val是Access中的保留字(它是一个函数) - 应该避免使用保留字作为任何名称。