代码之家  ›  专栏  ›  技术社区  ›  ryeguy

MS Access还能在哪里获得DSN?

  •  0
  • ryeguy  · 技术社区  · 16 年前

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

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

    access还能从哪里获取dsn?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Tony Toews    16 年前

    不要使用DSN。我更喜欢DSN少连接,因为它是一个少的事情,有人必须在每台电脑上配置,一个少的事情,用户搞砸。

    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/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
    
        2
  •  0
  •   Sergey Kornilov    16 年前

    显然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被更改,它就不会更新(至少对我来说不会)。

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

    推荐文章