【问题标题】:Deleting a backend file through VBA通过 VBA 删除后端文件
【发布时间】:2015-06-19 12:29:12
【问题描述】:

我有一个多用户数据库(POS/计费系统),分为前端和后端。每个用户在他们的平板电脑上都有这两个文件的副本,并且在办公室中维护一个主副本。每个用户每天发送导入到主数据库的数据导出,并且每周一次,主数据库的副本可供所有用户导入到他们的平板电脑。新的数据库文件以当前日期为前缀。 (例如 2015-04-10_BE_MYDATABASE.mdb)所有这些都是通过 VBA 完成的,并且一切正常。但是,我的问题是我最终在平板电脑上有多个文件,有时用户将前端连接到错误的(较旧的)后端。

我想做的是,当用户更新数据库时,删除他们连接到的当前后端文件。我创建了代码以将当前数据库的备份副本保存在不同的文件夹中,然后将我的所有表连接到新导入的数据库。但是,由于锁定文件,我无法删除/杀死当前数据库。

请帮忙。

【问题讨论】:

  • 所以我猜 Excel 文件是通过 Excel 连接而不是通过使用 ADO 的 VBA 代码连接到后端数据库的本地副本?
  • 此外,了解用户的待处理更改被写入何处也会很有帮助。是后端数据库的本地副本、Excel 文件、单独的数据库中的表吗?
  • Tmdean,应用在Access 2007中。所有用户都有相同的设置和文件,唯一的区别是只有办公室中的数据库副本用于合并所有数据。

标签: vba frontend backend lockfile


【解决方案1】:

我不会通过简单地重现您的情况来重现错误。

此代码会将 Frontend.accdb 中的 Table1 从 Backend1.accdb(当前已链接)切换到 Backend2.accdb。切换到Backend2.accdb后,Backend1.accdb没有被锁定,可以移动或删除。

Sub RelinkDb()
    Dim db As DAO.Database
    Dim td As DAO.TableDef

    Set db = CurrentDb
    Set td = db.TableDefs("Table1")
    td.Connect = ";DATABASE=C:\Users\...\Documents\Backend2.accdb"
    td.RefreshLink
End Sub

尝试创建一个测试环境,尽可能减少您的数据库(消除查询、表和其他数据库对象),同时仍然重现问题。一旦您可以在简单的环境中解决问题,通常解决方案就会变得显而易见。

【讨论】:

  • 您好TmDean,我能够通过关闭所有打开的表单来解决问题,这反过来又删除了锁定文件,然后在删除旧的数据库文件后重新打开登录表单。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 2019-06-08
相关资源
最近更新 更多