链接表ms访问2010更改连接字符串

Ren*_*Sun 20 ms-access

我正在开发一个现有的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(文件或机器).

Fio*_*ala 31

要打印所有连接字符串:

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
Run Code Online (Sandbox Code Playgroud)

要创建链接表:

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
Run Code Online (Sandbox Code Playgroud)

要更改链接:

    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
Run Code Online (Sandbox Code Playgroud)

  • 在`tdf.Refresh`我收到错误"对象不支持此属性或方法",而不得不使用`ResfreshLink`. (3认同)
  • @MichalHosala感谢您抽出宝贵时间指出错误.我已经纠正了代码. (2认同)

Ric*_* YS 23

您可以使用以下指南(原始源)更改连接字符串.

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

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

其次更新连接字符串.

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

  • 这要求我分别为每个表指定dns文件.如果我的accdb中有100个链接表怎么办? (2认同)
  • 对我来说,当我这样做时,我会得到一个单独的对话框来更新每个表的DSN.我最终找到了一个可以为你做的脚本. (2认同)