【问题标题】:Can't change Link Datasource through ADO for accdb format无法通过 ADO 为 accdb 格式更改链接数据源
【发布时间】:2013-09-11 07:09:33
【问题描述】:

我正在尝试使用 ADO 和 ADOX(来自 excel)将链接表添加到 Acccess 数据库。

但是每次我尝试时,都会收到错误消息: "Microsoft Access 不支持链接到以比当前数据库格式更新的格式保存的 Access 数据库或 Microsoft Office Excel 工作簿。"

链接表和目标数据库都是使用 Access 2010 制作的,都是 .accdb 格式。我的代码:

    Set cat = New ADOX.Catalog
    Set tbl = New ADOX.Table

    ' Open the catalog.
    cat.ActiveConnection = objConnection

    tbl.ParentCatalog = cat
    tbl.Name = "Promotions"
    tbl.Properties("Jet OLEDB:Link Datasource") = strCurrentPath & _
        "LocPrcCh.accdb"
    tbl.Properties("Jet OLEDB:Remote Table Name") = "Promotions"
    tbl.Properties("Jet OLEDB:Create Link") = True
    tbl.Properties("Jet OLEDB:Link Provider String") = _
        "MS Access;PWD=XXXXXXXXX;"

    cat.Tables.Append tbl

在最后一行之后返回错误。任何想法如何使这项工作?

【问题讨论】:

  • 为什么要使用 VBA 来链接来自两个不同数据库的表?
  • 这是一个用 excel 编写的解决方案,因为大多数用户在他们的计算机上没有访问权限。该解决方案使用位于服务器上的两个主要数据源:Promotions 数据库(每天更新多次)和大型 References 数据库(每月更新一次)。 excel 在运行它的计算机上创建两个数据库的本地副本。有时它需要同时对来自两个数据库的表运行查询,为此我创建了一个带有指向两个本地数据库的表链接的数据库。我查询了这个组合数据库。

标签: excel vba ms-access ado


【解决方案1】:

解决了。

我的目标文件具有 .accdb 扩展名,但不是 2007 格式。打开时它说这是一个 2002 - 2003 格式的访问文件。

该文件是在 Access 2010 中创建的,但后来更改了格式 我在程序的其他地方使用了 jetengine 压缩功能,它以旧格式创建了新版本的数据库。

【讨论】:

  • 遇到了类似的问题。最困难的部分是弄清楚数据库的格式。我发现这个Wikipedia article 有助于确定在哪个 MS Access 版本中使用哪种 MS Jet 格式。
猜你喜欢
  • 2011-01-23
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多