Microsoft Access无法保存设计更改,因为另一个用户打开了文件...但我是唯一的用户?

时间:2011-08-18 14:25:34

标签: vba ms-access-2010

一点背景:我使用Access 2010在Access 2003格式数据库中创建表单和VBA代码。出于某种原因,当我进行更改并使用特定的一组对象保存它们时,Access 2007格式数据库总是会损坏我,但这是另一个讨论。

在此Access 2003数据库中编写VBA代码时,只要我的代码中断(通过断点或未处理的错误)并进行更正,Access就会告诉我它无法保存回数据库,因为另一个用户拥有它打开。但是,我是唯一在数据库上工作的用户;这是数据库的本地副本,它位于我的桌面上。

无法删除LDB文件,因为Access正在使用它。当我第一次加载数据库时,在文本或十六进制编辑器中打开LDB时,我会看到我的机器名称和“Admin”。休息之后,我看到加上一个重复的条目,但这次“admin”有一个小写的“A”。

关闭数据库并重新打开它可以解决问题,但是调试我的代码会变得非常麻烦。其他人遇到这个问题和/或有解决方法吗?

4 个答案:

答案 0 :(得分:1)

在发生这种情况时,了解您的代码正在做什么可能会有所帮助。当然这不是正常行为。例如,您是否使用New Access.Application打开另一个数据库?您是否使用ADO或DAO通过连接字符串访问数据库中的记录?

  

根本没有与数据库的外部连接。

如果使用连接字符串连接到打开的数据库,是否存在与数据库的外部连接可能无关紧要;不确定但可能被视为外部连接...您可能希望将CurrentDB用于DAO,或将CurrentProject.Connection用作任何ADO查询的ActiveConnection。

我假设这个问题在重新启动时仍然存在;但是为了参数,请尝试关闭Access并转到任务管理器以确保没有其他MSAccess.exe实例正在运行。您甚至可以尝试关闭所有Office产品和/或确保Access是唯一运行的Office产品。我看到Microsoft Communicator和Outlook之间存在一些奇怪的冲突;因此,Access与其他MS产品存在问题并非完全不可能。

您可能还想检查数据库的大小,以确保它不超过2GB。这导致臭名昭着的“无效参数”错误;也许它也可能导致这种情况。

由于没有关于您的计划如何运作的其他详细信息,我们可能只能提供这样的通用建议。

答案 1 :(得分:1)

我发现了一种导致上述问题的方法(从而纠正它)。如果您创建数据库对象并将其设置为当前数据库,则会出现此问题。 也就是说,

dim cdb as database

设置cdb = currentdb

从这时起,你就熟了。 相反,可以通过直接使用currentdb或根本不使用它来解决这个问题。 这对我有用。

答案 2 :(得分:0)

在您的VBA中尝试检查所有打开的数据库连接是否已关闭。在连接打开之前,LDB填充将在那里。

答案 3 :(得分:0)

解决方案:

options > current database > click enable -track name auto correct info