2012-09-26 114 views
15

我正在处理现有的MS Access 2010项目,该项目具有链接到Sql Server数据库的链接表链接。链接表ms访问2010更改连接字符串

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

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

问题

  1. 当连接字符串定位在哪里?如何更改它(示例数据库名称)?

  2. 如何创建一个类似的dsn-less链接表?任何时候,当我创建一个链接表Access 2010时,总是强迫我选择\创建一个dsn(文件或计算机)。

+1

您可以使用链接表管理器来更改连接。使用外部数据,ODBC来创建链接表。您可以使用VBA编辑连接。示例:http://stackoverflow.com/questions/4928134/changing-linked-table-location-programatically/4928209#4928209 – Fionnuala

+0

无法在链接表管理器中更改dns-less连接字符串。此外,我搜索了整个项目(VBA代码),无法找到我提到dsn-less连接的连接字符串。 –

回答

23

要打印所有连接字符串:

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 
+3

在'tdf.Refresh'上我收到错误“Object不支持这个属性或方法”,而不得不使用'ResfreshLink'。 –

+2

@MichalHosala感谢您花时间指出错误。我已更正了代码。 –

15

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

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

  1. 开放的MS Access
  2. 上所使用的工作表中点击鼠标右键,或者你一定不工作,并选择“设计视图”。在警告屏幕上
  3. 选择是继续
  4. 如果在右边,有针对此表的属性窗口,在功能区(Access 2010中)单击属性表
  5. 这揭示了一个Description属性 - 复制所有它在该属性中并将其粘贴到记事本或其他地方供以后使用。

其次更新连接字符串。

  1. 功能区单击外部数据,然后选择“链接表管理器”
    1. 单击始终提示输入新位置复选框 - 这是要求用户复杂的方式,如果他(她) wasts更改连接信息
    2. 单击Select All按钮,或选择您希望与查马克更新表
    3. 单击确定
  2. 一个对话框来向上。单击新建
    1. 选择SQL Server作为驱动程序
    2. 单击高级按钮
    3. 粘贴所有的东西在记事本
      • 除非删除表= ...的东西到下一个分号。
      • 更改服务器名称
      • 单击确定
    4. 然后,它会提示您这一切都保存到一个文件供以后使用。在连接文件夹中选择我的文档中的某个位置 - 或者更好的位于网络位置以供其他人以后使用
    5. 单击确定几次
    6. 现在Access将使用新的DSN(连接详细信息)替换所有表格,串。
+2

这需要我为每个表单独指定dns文件。如果我在accdb中有100个链接的表格会怎么样? – Hill

+0

@Hill好像你在链接表管理器中检查的所有表都会被新的DSN更新。所以你不应该单独更新每一个。 –

+2

对我来说,当我这样做时,我会得到一个单独的对话来更新每个表的DSN。我最终找到了一个能够为你做到的脚本。 – Hill