【问题标题】:Create a 2003 .mdb file创建 2003 .mdb 文件
【发布时间】:2015-06-28 23:18:13
【问题描述】:
Dim LFileName as String
Applicaion.FileDialog(msoFileDialogSaveAs).InitialFileName = "\\filepath\\" & Format(Now,"mm-dd-yyyy") & ".mdb"
If intChoice <> 0 Then
    LFileName = Application.FineDialog(msoFileDialogSaveAs).SelectedItems(1)
End If

If Dir(LFilename) <> "" Then Kill LFilename

Set ws = dbEngine.Workspaces(0)
Set db = ws.CreateDatabase(LFileName, dbLangGeneral)

这是“创建 .mdb 文件”代码,它可以工作。唯一的问题是,在我转移表和所有内容之后,然后尝试将我的前端重新链接到后端(这个创建的数据库)它给了我这个错误:

Microsoft Access 不支持链接到以比当前数据库格式更新的格式保存的 Access 数据库或 Microsoft Office Excel 工作簿

但是。如果我采用新创建的后端文件(使用 vba 代码制作)并保存并发布 > Microsoft Access 2003 .mdb 格式,然后尝试重新链接它,它可以工作。它是否保存为 .accdb 但带有 .mdb 后缀或其他内容(?)

所以这让我想知道是否有办法专门用 VBA 创建 mdb 2003 格式的 mdb?我整天都在谷歌上搜索,除了上面的代码我找不到任何东西。有没有办法更好地表达这个问题?

信息:我使用的是 Access 2010,但我必须使用 .mdb,因为办公室中的一些人仍在使用 office 2007。我知道 office 2007 可以使用 .accdb 文件,但它无法处理 2010 的 .accdb 文件出于某种原因。

【问题讨论】:

  • 保存为MS Access 2k7数据库有问题吗?

标签: vba ms-access


【解决方案1】:

[Access 2010] 是否保存为 .accdb 但带有 .mdb 后缀之类的 (?)

是的,是的。如果您在 Access 2010 中打开“.mdb”文件,标题栏会显示

...:数据库(Access 2007 - 2010)- Microsoft Access

如果要创建 Access_2003 格式的数据库文件,请使用

Set db = ws.CreateDatabase(LFileName, dbLangGeneral, dbVersion40)

【讨论】:

    【解决方案2】:

    我正在迁移许多 Access 2000、2002-2003 格式的数据库应用程序,以便在 Access 2016 环境中使用。我注意到其中一些数据库应用程序创建了一个临时数据库。

    在 Access 2003 环境中,创建的临时数据库文件将使用在 Access 2003 实例中配置的任何默认数据库格式,例如使用以下代码格式化 2000 或 2002-2003:

    Set dbnew = wk.CreateDatabase(gstrtmpdb, dbLangGeneral)
    

    注意:此处未使用“选项”数据库版本参数。

    在 Access 2016 环境中,相同的代码将使用 2007-2016 创建数据库,而不管 Access 实例中配置的默认格式如何。在这种情况下,前端数据库格式 2003 尝试创建到新创建的临时数据库(格式 2007-2016)的链接表,并抛出相同的错误: Microsoft Access 不支持链接到以晚于当前数据库格式的格式保存的 Access 数据库或 Microsoft Office Excel 工作簿。

    使用 Windows 资源管理器查看在 Access 2016 环境中创建的临时数据库文件及其在打开数据库时创建的关联锁定文件的详细信息时,可能会出现混淆。 VBA 代码创建临时数据库文件,例如tempdb.mdb.
    从表面上看,这看起来像是 Access 2000 或 2002-2003 格式的数据库文件。
    如果你打开这个tempdb.mdb 创建的锁定文件名为
    tempdb.laccdb(锁定文件的 2007-2016 格式)。这很令人困惑。

    如果您需要创建 2007-2016 格式的数据库,为了避免混淆,最好通过将创建的数据库重命名为具有 .accdb 扩展名而不是保留它来修改 VBA 代码成为.mdb 在这种情况下,我们需要一个带有 .mdb 扩展名的 2003 格式,因此前面提到的解决方法是使用“Option”数据库版本参数,在这种情况下
    使用以下代码。

    创建 2003 格式数据库


    Set dbnew = wk.CreateDatabase(gstrtmpdb, dbLangGeneral, dbVersion40)
    

    注意:此处使用了“选项”数据库版本参数。

    希望这对人们有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      相关资源
      最近更新 更多