【问题标题】:Access 2016 DoCmd.RunSQL & CurrentDb.Execute are not working for update queriesAccess 2016 DoCmd.RunSQL & CurrentDb.Execute 不适用于更新查询
【发布时间】:2023-04-03 17:25:01
【问题描述】:

我有一个 SQLQuery 字符串,我将其传递给 DoCmd.RunSQLCurrentDb.Execute,这两个命令均不返回任何警告并且不执行任何操作...

UPDATE [tblEngrDetails] SET [Colour] = 'Tangerine' WHERE [Reference Number] = '2018-202' AND ([Colour] IS NULL OR [Colour] <> 'Tangerine');
UPDATE [tblEngrDetails] SET [Colour] = 'Tangerine' WHERE [Reference Number] = '2019-525' AND ([Colour] IS NULL OR [Colour] <> 'Tangerine');
UPDATE [tblEngrDetails] SET [Colour] = 'Tangerine' WHERE [Reference Number] = '2019-103' AND ([Colour] IS NULL OR [Colour] <> 'Tangerine');
UPDATE [tblEngrDetails] SET [Colour] = 'Tangerine' WHERE [Reference Number] = '2018-605' AND ([Colour] IS NULL OR [Colour] <> 'Tangerine');
UPDATE [tblEngrDetails] SET [Colour] = 'Tangerine' WHERE [Reference Number] = '2018-520' AND ([Colour] IS NULL OR [Colour] <> 'Tangerine');
UPDATE [tblEngrDetails] SET [Colour] = 'Tangerine' WHERE [Reference Number] = '2018-512' AND ([Colour] IS NULL OR [Colour] <> 'Tangerine');
UPDATE [tblEngrDetails] SET [Colour] = 'Tangerine' WHERE [Reference Number] = '2018-402' AND ([Colour] IS NULL OR [Colour] <> 'Tangerine');
UPDATE [tblEngrDetails] SET [Colour] = 'Tangerine' WHERE [Reference Number] = '2018-203' AND ([Colour] IS NULL OR [Colour] <> 'Tangerine');
UPDATE [tblEngrDetails] SET [Colour] = 'Orange' WHERE [Reference Number] = '2017-609' AND ([Colour] IS NULL OR [Colour] <> 'Orange');
UPDATE [tblEngrDetails] SET [Colour] = 'Orange' WHERE [Reference Number] = '2016-616' AND ([Colour] IS NULL OR [Colour] <> 'Orange');
UPDATE [tblEngrDetails] SET [Colour] = 'Orange' WHERE [Reference Number] = '2016-528' AND ([Colour] IS NULL OR [Colour] <> 'Orange');
UPDATE [tblEngrDetails] SET [Colour] = 'Orange' WHERE [Reference Number] = '2016-524' AND ([Colour] IS NULL OR [Colour] <> 'Orange');
UPDATE [tblEngrDetails] SET [Colour] = 'Orange' WHERE [Reference Number] = '2016-405' AND ([Colour] IS NULL OR [Colour] <> 'Orange');
UPDATE [tblEngrDetails] SET [Colour] = 'Orange' WHERE [Reference Number] = '2015-206' AND ([Colour] IS NULL OR [Colour] <> 'Orange');
UPDATE [tblEngrDetails] SET [Colour] = 'Orange' WHERE [Reference Number] = '2015-204' AND ([Colour] IS NULL OR [Colour] <> 'Orange');
UPDATE [tblEngrDetails] SET [Colour] = 'Orange' WHERE [Reference Number] = '2013-530' AND ([Colour] IS NULL OR [Colour] <> 'Orange');
UPDATE [tblEngrDetails] SET [Colour] = 'Orange' WHERE [Reference Number] = '2013-509' AND ([Colour] IS NULL OR [Colour] <> 'Orange');
UPDATE [tblEngrDetails] SET [Colour] = 'Orange' WHERE [Reference Number] = '2013-208' AND ([Colour] IS NULL OR [Colour] <> 'Orange');
UPDATE [tblEngrDetails] SET [Colour] = 'Orange' WHERE [Reference Number] = '2012-604' AND ([Colour] IS NULL OR [Colour] <> 'Orange');

查询在 SQL Server Studio 中运行正常,所以我不知道出了什么问题。

【问题讨论】:

  • 当你可以将它作为 1 时,为什么将它作为 19 个 UPDATE 语句?
  • 使用 Currentdb.Execute 您需要包含 DBFailOnError 子句
  • 发布你的实际执行代码。
  • 您知道stackoverflow.com/questions/58832269/… 吗? (不确定这也是重复的。)
  • @Whiteclaws 我们要求查看您的代码的原因是您是否有任何其他愚蠢的代码阻止您看到错误,即on error resume next :)

标签: sql-server vba tsql ms-access


【解决方案1】:

您是否将其作为单个字符串传递以一次全部执行?这是行不通的。您必须分别执行每个UPDATE 查询。

另外(这里不是这种情况,但仅供参考)MS SQL Server SQL 与 MS Access SQL 不同。仅仅因为代码适用于一个并不意味着它会适用于另一个。

【讨论】:

  • 真的吗?不能在 Access SQL 中批处理 SQL 语句?我猜是讨厌 Access 的另一个原因 :) 。我想我担心的事情成真了,嗯。此外,Access SQL 和 T-SQL 之间的更新语句应该相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
  • 2013-01-27
  • 1970-01-01
  • 2018-06-12
  • 2020-11-04
  • 2021-12-03
相关资源
最近更新 更多