突然间,我开始收到一个"无效使用Null"。现在,我的数据库中的许多不相关的查询都出现了这种情况。(MS Access 2010)
其中一个查询背后的SQL代码是:
INSERT INTO [Vendor List] ( [Vendor Number], [Vendor Name] )
SELECT [2_Onbase_NewVendors].[Vendor Number], [2_Onbase_NewVendors].[Vendor Name]
FROM 2_Onbase_NewVendors LEFT JOIN [Vendor List] ON [2_Onbase_NewVendors].[Vendor Number] = [Vendor List].[Vendor Number]
WHERE ((([2_Onbase_NewVendors].[Vendor Name]) Is Null));
该查询只是简单地查找一个丢失的"供应商"并将其添加到中。在过去几年中,这一直非常有效。我看了一下这两个表,目前没有返回null,因为所有内容实际上都匹配。
我检查了参考资料,它们似乎都是正确的。没有"丢失"的引用。这在运行时和完整版本中都会发生。我在Windows 10上运行完整的Access版本,而运行时版本上运行的是Windows 7。我们最近应用了Microsoft office更新,但我找不到任何相关的更新。我花了几个小时上网,但找不到任何相关的东西。网络上的大多数内容似乎都来自于人们创建查询的时候。我已经在前端和后端数据库上运行了压缩和修复。
有什么建议吗?
我倾向于说"谢谢微软",但这个查询看起来确实有点奇怪:
查询是从表2_Onbase_NewVendors中选择数据,并将其插入表[供应商列表]中,但仅限于2_Onbase_newVendor。[供应商名称]为空?
这不应该是[供应商名单]的地方吗。[供应商编号]为空?(或供应商名称):
INSERT INTO [Vendor List] ([Vendor Number], [Vendor Name])
SELECT nv.[Vendor Number], nv.[Vendor Name]
FROM 2_Onbase_NewVendors nv LEFT JOIN [Vendor List] vl ON nv.[Vendor Number] = vl.[Vendor Number]
WHERE vl.[Vendor Number] IS NULL
建议您始终使用表别名(正如我在这里所做的那样),因为它总是提高清晰度,无论是对您自己还是对必须阅读代码的其他人。