2009-10-27 125 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。

我想你唯一的選擇是刪除一個鏈接並創建一個新鏈接。