【发布时间】:2012-12-26 20:15:00
【问题描述】:
我在查询中有以下列。
iif(Len([Field1])=0,0,Asc(Mid([Field1] & "",Len([Field1]))))
这个想法是它应该返回字符串字段中最后一个字符的 ASCII 值。 问题是,如果 Field1 为空,则语句错误并显示以下消息:“无效的过程调用或参数(错误 5)”。如果该字段为空,则应返回 0。
【问题讨论】:
-
别忘了有时编译器doesn't short circuit within IIF() statement。因此,在您的情况下,将
field1评估为不为空... -
@bonCodigo 您在 VBA 代码中对
IIf()是正确的。但是IIf()确实在查询中使用时会短路。 -
@HansUp 同意你的看法。瑞克,如果您的
IIF()会变得过长,那么您可能需要考虑使用UDF和case...相对较快并保持查询的清晰度。
标签: vba ms-access ms-access-2007 ms-access-2010