MS Access还能在哪里获得DSN?

时间:2009-10-27 17:30:22

标签: ms-access odbc

我有一个Access 2000应用程序来管理。 DSN指向生产Postgresql数据库,我想将它指向我的机器上运行的数据库进行测试。

问题是,我无法弄清楚如何改变它。我尝试运行odbcad32.exe,我确实看到了DSN,并且能够将其更改为我想要的(并且它确实通过了“测试连接”测试),但它似乎仍然连接到旧的生产dsn 。我通过检查转储到C:\的连接日志来确认这一点。我在注册表中搜索了生产服务器的名称;我找不到它(我确认我的更改已发布到注册表。我搜索了整个项目的表单'服务器名称的来源,我也找不到它。

Access还能从哪里获取dsn?

2 个答案:

答案 0 :(得分:1)

不要使用DSN。我更喜欢DSN-Less连接,因为对于某人来说,在每台PC上配置一件事就少了一件事,而对于用户搞砸了一件事就少了。

Using DSN-Less Connections

ODBC DSN-Less Connection Tutorial Part I

HOWTO: Use "DSN-Less" ODBC Connections with RDO and DAO

Carl Prothman's Connection String Home Page

Relink ODBC tables from code

此外,为您设置使用开发连接字符串的设置和其他所有人的生产连接字符串也更容易。例如,假设您的用户只获得MDE / ACCDE,您可以使用以下函数来确定要使用的连接字符串

Public Function tt_IsThisAnMDE()
On Error GoTo tagError

  Dim dbs As Database
  Set dbs = CurrentDb
  Dim strMDE As String
  On Error Resume Next
  strMDE = dbs.Properties("MDE")
  If Err = 0 And strMDE = "T" Then
    tt_IsThisAnMDE = True
  Else
    tt_IsThisAnMDE = False
  End If

    Exit Function

tagError:
    Call LogError(Application.CurrentObjectName, "")
    Exit Function

End Function

答案 1 :(得分:0)

显然MS Access存储整个连接字符串,而不仅仅是DSN名称。这是我在记事本中看到打开的.mdb文件:

DSN=SQL-Northwind;APP=Microsoft Office 2003;WSID=DELLNOTEBOOK;DATABASE=Northwind;Network=DBMSSOCN;Address=LOCALHOST;Trusted_Connection=Yes

MS Access附带链接表管理器,但一旦更改后它不会更新DSN(至少不适用于我)。

我想您唯一的选择是删除链接并创建一个新链接。