我们过去几年一直在使用xp机器上的Access 2003上使用删除命令,直到我们将系统升级到Access 2010和Windows 7之前,它一直运行良好。
请参阅下面的错误。不确定我错过了什么。我尝试创建一个新的链接oracle表,但它没有用。
答案 0 :(得分:1)
尝试通过MS Access 2010更新链接的SQL Server表时,我遇到了同样的锁定错误。
这对你来说可能不再是一个问题,因为这个帖子太旧了,但希望将来能让其他人更容易。
我能够通过将SQL Server中的ID字段从bigint更改为int来修复它。
您可能还需要确保“访问选项”中的“默认记录锁定”设置为“无锁定” - >客户端设置 - >高级 DefaultRecordLocking http://www.tmetrics.net/support/patrick/stackoverflow/defaultrecordlocking.jpg
答案 1 :(得分:1)
我在链接表中遇到此错误,该表具有主键和唯一键。链接表时,Access假定唯一键是主键。
暂时禁用或删除唯一密钥并使用链接表管理器刷新链接“问题已解决。
答案 2 :(得分:0)
看来它无法删除的332条记录被锁定,也许是由其他一些进程锁定的?是否有一个停滞的进程在某个地方运行,锁定了这些记录?
答案 3 :(得分:0)
我遇到了类似的问题......可以手动删除记录,但通过查询获取该消息。
即使我在一对多关系中删除“many”表中的记录,仍会出现“密钥违规”消息。
我编辑了与ADD 级联更新和级联删除的关系,问题就消失了。
答案 4 :(得分:0)
我遇到了这个问题。我有一个Oracle数据库的Access前端。我试图从链接表中删除记录。我还没有在互联网上的任何地方找到解决方案。这是我的解决方案"。
我从DoCmd.RunSQL转换为DBS.Execute以运行我的删除查询。这摆脱了错误信息。但并非所有记录都被删除了。所以现在我在循环中执行删除查询。
recCount = DLookup(" count(*)"," my_table")
Do While recCount > 0
DBS.Execute "DELETE * FROM my_table", dbSeeChanges
recCount = DLookup("count(*)", "prod_nmpsia_premiums")
Loop
有时它只需要一次通过。其他时候需要一些。 我知道它是一个混合物。但它确实有效。
答案 5 :(得分:0)
我使用Access 2016和Oracle数据库遇到了同样的问题。我可以很好地附加到Oracle表,但是当我运行删除查询以删除那些相同的记录时,它会删除一些记录并说其他记录被锁定。如果我将查询循环足够多次,它最终将删除所有记录。
我找到的解决方案是在Access删除查询中,我设置了'使用交易'财产到'否'它开始工作正常,没有任何记录锁定。我不知道这是否是一个完美的解决方案,但它在我的情况下是有效的。
- 更新 -
上述解决方案适用于我的一些查询,但后来我仍遇到其他查询的问题。所以它在某些情况下有所帮助,但并没有完全发挥作用。
现在似乎工作的是我在Oracle中存储了一个过程,它将删除我需要删除的数据,并且我从Access调用该过程。