运行 4 年后,我现在在我的 MS Access 2010 数据库中收到一个"Invalid use of Null"错误



突然间,我开始收到一个"无效使用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

建议您始终使用表别名(正如我在这里所做的那样),因为它总是提高清晰度,无论是对您自己还是对必须阅读代码的其他人。

相关内容

最新更新