为什么我的查询中出现“无效使用Null”错误?

问题描述 投票:12回答:1

我在Excel中使用用户窗体在电子表格之间运行一些内部查询。但是我得到Invalid Use of Null。我知道nz null语法(SQL MS Access - Invalid Use of Null),但是我的查询可能很大,我想知道是否可以添加任何内容到VBA代码中以允许null。

sql excel ms-access access-vba
1个回答
10
投票

铸造函数,例如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,也不会引发错误。

© www.soinside.com 2019 - 2024. All rights reserved.