我正在使用Access VBA调用构建某些图表的R脚本。此R脚本通过ODBC查询从Access数据库中提取一些数据。我正在使用library(RODBC)
从R建立连接。
如果我重新启动Access或运行压缩/修复,该查询将始终运行。但是,如果我在数据库中进行其他更改,有时会收到以下警告:
警告消息: 1:在odbcDriverConnect(sprintf(“ Driver = {Microsoft Access Driver(* .mdb,* .accdb)}; DBQ =%s”,中: [RODBC]错误:状态HY000,代码-3810,消息[Microsoft] [ODBC Microsoft Access驱动程序]该数据库已由未知用户置于状态,阻止其打开或锁定。'
由于无法建立连接,脚本无法运行。
管理/设置数据库状态以使查询始终运行的最佳方法是什么?问题并不与表是否打开直接相关-我可以打开表,然后关闭表,没有问题,甚至有时在表打开的情况下运行。
编辑:该错误是由VBA模块中的任何更改引起的(这与脚本的实际VBA调用无关,我可以运行相同的rscript
调用在命令行中复制错误)。既然我知道这就是原因,那么我认为这不是大问题。保存VBA模块有时似乎可以纠正错误,尽管不是100%的时间。
答案 0 :(得分:2)
这是设计使然。
对VBA模块,表单或报表进行任何设计更改都会在accdb文件上设置排他锁,该锁将一直保留到进行更改的Access应用程序关闭为止。
对表单,报表或VBA模块进行任何设计更改后,只需关闭并重新打开文件即可。
这是人们建议您拆分数据库的原因之一,因为这样您就可以更改设计而无需将人们锁定在数据之外。