可以说我有两个查询
select iif(condition, col, null) from table
select f(col) from table
其中col
是双值列f
是 VBA- public function(value as double) as variant
。稍后,我将相应字段的格式更改为以某种数字格式显示,例如百分比。我已经决定它f
应该是 avariant
因为它应该在适当的时候返回 Null。但是,在前一种情况下,我指定的格式得到尊重,但如果我切换到后者,数字格式将被完全忽略。为什么?
答案可以在 Allen Browne 的页面中找到:
数字格式选项不会影响从 VBA 变体自动转换的文本值,即使原始值被编码为数字。
他推荐的解决方案是执行您已经发现的操作:使用 IIF 语句。Jet 引擎使用来自参数的数据类型线索来确定返回列的数据类型。
下面是一些代码,可以显示自动选择的列类型: