我在Excel中使用用户窗体在电子表格之间运行一些内部查询。但是我得到Invalid Use of Null
。我知道nz
null语法(SQL MS Access - Invalid Use of Null),但是我的查询可能很大,我想知道是否可以添加任何内容到VBA代码中以允许null。
铸造函数,例如CStr
,很容易触发无效使用null。不需要在连接中使用CStr
,因为它将进行类型转换以获得相等性。
删除以下位置的CStr
:
on cstr(map_transit.[Transit])=cstr(master.[Transit # (not rollup)])
和
on cstr(map_rfcurve.[Currency])=cstr(map_curr.[EnterpriseCurrency]))
注意,在这些子查询中使用Is Not Null
进行过滤后,优化程序可能会先进行连接,然后在过滤之前抛出Invalid Use Of Null
。请参阅this answer以了解优化器执行类似操作的示例情况。
或者,如果您确实要转换为字符串,则可以使用以下代码:
on (map_transit.[Transit] & '' = master.[Transit # (not rollup)] & '')
将空字符串附加到某物上将其值强制转换为字符串,即使它为Null,也不会引发错误。