【问题标题】:Linked table ms access 2010 change connection string链接表 ms 访问 2010 更改连接字符串
【发布时间】:2012-09-18 08:24:30
【问题描述】:

我正在处理现有的 MS Access 2010 项目,该项目具有指向 Sql Server 数据库的链接表链接。

当我将鼠标悬停在链接表上时,我可以看到一个连接字符串 'ODBC;DRIVER=SQL Server;SERVER=10.0.0.1;UID=testdb;APP=Microsoft Office 2003;WSID=abc;TABLE=dbo.user'

这看起来像一个无 dsn 的链接表。

问题

  1. 连接字符串位于何处?如何更改它(示例数据库名称)?

  2. 如何创建类似的无 dsn 链接表?每当我创建链接表时,Access 2010 总是强制我选择\创建一个 dsn(文件或机器)。

【问题讨论】:

  • 您可以使用链接表管理器来更改连接。使用外部数据、ODBC 创建链接表。您可以使用 VBA 编辑连接。示例:stackoverflow.com/questions/4928134/…
  • 无 dns 连接字符串无法在链接表管理器中更改。此外,我搜索了整个项目(VBA 代码),但找不到我提到的无 dsn 连接的连接字符串。

标签: ms-access


【解决方案1】:

打印所有连接字符串:

Dim tdf As TableDef
Dim db As Database

    Set db = CurrentDb

    For Each tdf In CurrentDb.TableDefs
        If tdf.Connect <> vbNullString Then
           Debug.Print tdf.Name; " -- "; tdf.SourceTableName; " -- "; tdf.Connect
        End If
    Next

创建链接表:

With CurrentDb
    ''If the table does not have a unique index, you will need to create one
    ''if you wish to update.
    Set tdf = .CreateTableDef("LocalName")
    tdf.Connect = "ODBC;DRIVER=SQL Server;SERVER=10.0.0.1;" _
      & "UID=testdb;APP=Microsoft Office 2003;WSID=abc;TABLE=dbo.user"
    tdf.SourceTableName = "TABLE_NAME"
    .TableDefs.Append tdf
    .TableDefs.Refresh
End With

要更改链接:

    Set db = CurrentDB
    Set tdf = db.TableDefs("MyTable")
    tdf.Connect = "ODBC;DRIVER=SQL Server;SERVER=10.0.0.1;" _
      & "UID=testdb;APP=Microsoft Office 2003;WSID=abc;TABLE=dbo.user"
    tdf.RefreshLink

【讨论】:

  • tdf.Refresh 我收到错误“对象不支持此属性或方法”,必须改用ResfreshLink
  • @MichalHosala 感谢您花时间指出错误。我已经更正了代码。
  • 作为这篇文章的旁注,值得指出的是,在 Ms Access 中,连接字符串与 ASP.NET 或 Classic ASP 之类的连接字符串并不完全相同 - 连接字符串必须以 'ODBC;' 为前缀,并指定驱动程序(特别注意我们这些来自 .NET/.NET Core 背景的人)。
【解决方案2】:

您可以使用以下指南 (Original Source) 更改连接字符串。

首先,获取现有的连接字符串。

  1. 打开 MS Access
  2. 用鼠标右键单击曾经可以工作或您确定可以工作的表格,然后选择“设计视图”。
  3. 在警告屏幕上选择“是”以继续
  4. 如果右侧没有表的属性窗口,请在功能区 (Access 2010) 上单击属性表
  5. 这会显示一个 Description 属性 - 复制该属性中的所有内容并将其粘贴到记事本或其他地方以供以后使用。

第二次更新连接字符串。

  1. 单击功能区中的外部数据并选择“链接表管理器”
    1. 单击始终提示输入新位置复选框 - 这是询问用户是否浪费了更改连接信息的一种复杂方式
    2. 单击“全选”按钮或使用复选标记选择要更新的表
    3. 点击确定
  2. 出现一个对话框。点击新建
    1. 选择 SQL Server 作为您的驱动程序
    2. 点击高级按钮
    3. 在记事本中粘贴所有内容
      • EXCEPT REMOVE the TABLE=... 填充到下一个分号。
      • 更改服务器名称
      • 点击确定
    4. 然后它会提示您将所有这些保存到文件中以备后用。在“我的文档”中的连接文件夹中选择一个位置 - 或者更好的是在网络位置供其他人稍后使用
    5. 点击确定几次
    6. 现在 Access 将使用新的 DSN(连接详细信息)字符串替换您的所有表。

【讨论】:

  • 这要求我为每个表单独指定 dns 文件。如果我的 accdb 中有 100 个链接表怎么办?
  • @Hill 您在链接表管理器中检查的所有表似乎都将使用新的 DSN 进行更新。所以你不必单独更新每一个。
  • 对我来说,当我这样做时,我会得到一个单独的对话框来更新每个单独的表的 DSN。我最终找到了一个可以为你做这件事的脚本。
  • @Hill,你在哪里找到可以为你做这件事的脚本?请发帖!我有一百多个表需要手动添加数据源。
  • @Hill,还需要注意的是,当它提示您输入每个表的连接信息时,是因为并非您选择的所有表都具有相同的连接字符串。或者换句话说,如果您的所有表都具有相同的连接,Access 会假定它将继续以这种方式,并让您只指定一次连接。
猜你喜欢
  • 2014-06-14
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-19
相关资源
最近更新 更多