2009-10-27 94 views
0

我有一个访问2000应用程序来管理。 DSN指向生产Postgresql数据库,我想将它指向我的机器上运行的测试。MS Access可以在哪里获得DSN?

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

还有什么地方可以访问从?

+0

您是否检查过每个链接表的单个DSN? – flayto 2009-10-27 17:36:13

+0

那究竟是哪里?列表中没有任何其他DSN。另外,连接日志中显示的是我正在编辑的那个。 – ryeguy 2009-10-27 17:45:03

+0

当您对DSN进行更改时,是否退出了应用程序? – shahkalpesh 2009-10-27 17:49:20

回答

1

不要使用的DSN的DSN。我更喜欢DSN的连接,因为它是一个有人有每台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

而且它更容易有使用你开发连接字符串和其他人生产的连接字符串的设置。例如,假设您的用户只能得到MDES/ACCDEs,你可以使用下面的函数来确定要使用的连接字符串

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

然而,使用DSN的一个优势是您不必更改链接表以切换数据源 - 您只需将DSN更改为指向不同的后端即可。有点像映射的驱动器字母,dontcha认为? ;) – 2009-10-27 20:59:56

+0

嘿嘿嘿按照我自己的评论过去,呃? – 2009-10-28 03:31:57

0

显然MS Access将整个连接字符串,而不仅仅是DSN名。以下是我看到记事本中打开.mdb文件:

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

MS访问带有链接表管理然而,一旦它改变(至少对于我来说)它不会更新DSN。

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