【发布时间】:2010-10-21 07:04:25
【问题描述】:
在 Access 2003 Pro(内部版本 11.8321.8324)SP3 上测试。
重现步骤:
- 创建一个新数据库。
- 创建一个新表单。
- 在表单上放置一个按钮。
- 在按钮的 Click 事件过程中粘贴以下代码:
Debug.Print Workspaces.CountDebug.Print CurrentDb.Name
- 关闭代码编辑器和表单,保存更改。
- 不要跳过这一步:关闭 Access。
- 重新打开 Access 和您的数据库。
- 打开表格
- 点击按钮
- 单击工具栏按钮将表单切换到设计模式。
您应该会看到以下错误对话框:
此时您没有对数据库的独占访问权限。如果您继续进行更改,您以后可能无法保存它们。
有人知道这里发生了什么吗?
【问题讨论】:
-
关闭后,锁文件(.ldb)是否还在,即没有自动删除?
-
@awrigley:不,它被删除了。
-
计算工作空间时一定有问题,出于某种原因,它可能认为其他项目已访问/打开它。但我推测,我真的没有任何线索。我会联系 MS。
-
@awrigley:“计数”是一条红鲱鱼。从我的实验中,你只需要参考“工作区”,所以我选择了一个看起来无害的属性。
-
DBEngine.Workspaces.Count 是否会导致同样的问题?我的猜测是 DAO.Workspaces.Count 正在被使用,并且正在初始化导致问题的 DAO 中的某些内容。除了作为 DBEngine 的孩子之外,我从未使用过 Workspaces 集合。当然,这可能没有意义,因为 DBEngine 本身是 DAO 和 Application 对象的子对象,因此除非 DBEngine.Workspaces 默认为 Application 父对象,否则它不会成为问题的原因。您应该在不参考 DAO 的情况下对其进行测试。
标签: ms-access locking ms-access-2003