【问题标题】:Connecting MS Access to PostgreSQL Server将 MS Access 连接到 PostgreSQL 服务器
【发布时间】:2018-05-27 12:42:11
【问题描述】:

我无法连接到我们的 postgres 服务器。我得到了用于将 ms 访问连接到我们的 SQL Server 的代码。它应该是DSN-less,我已经安装了一个ODBC-driver,现在我找不到正确的连接字符串来写入访问'vba 代码。

我知道它必须有点像这样:

stConnect = "ODBC;Driver={PostgreSQL UNICODE};Data Provider=pgsqlODBC;hostaddr=[IP-adress];Port=61000;dbname=TE_TestFirst;user=admin;password=testtest;"

或者可能是这样的:

stConnect = "ODBC;Driver={PostgreSQL UNICODE};Data Provider=pgsqlODBC;SERVER=[IP-adress];PORT=61000;DATABASE=TE_TestFirst;UID=admin;PWD=testtest;"

我读到需要为 64Bit-Pcs 提供“数据提供者”。然而,除了我们不想要的 DSN 版本之外,没有任何效果。我从各个方面复制了无数的连接字符串,也许我正在监督什么?

期待您的回复,并在此先感谢您。 布丁洛菲尔

【问题讨论】:

  • 您说您希望连接字符串到 Access。为什么你的问题中有 Postgres 连接字符串?
  • 嗯,不,我想连接到 Postgres。我使用 Access 作为前端。我可能表达得很糟糕
  • 您是否尝试过使用文件 DSN?这实际上在 Access 中创建了一个无 DSN 连接
  • 我不这么认为。我不确定这是什么,但如果每个用户都需要在他们的计算机上进行此连接,那么恐怕我无法使用它
  • @Puddingloeffel 尝试使用它。它是一个文件,其中存储有 DSN 连接信息。如果您使用它来创建连接,它实际上会创建您想要的无 DSN 连接。

标签: postgresql ms-access odbc connection-string psqlodbc


【解决方案1】:

类似这样的:

stConnect = "Driver={PostgreSQL Unicode(x64)};Servername=dbtest;Port=5432;UID=postgres;Database=postgres;Password=****";

【讨论】:

  • 它对我不起作用,但非常感谢您的分享 :') 也许它会帮助其他人
  • 如果您使用 32 位访问,请尝试Driver={PostgreSQL Unicode}
【解决方案2】:

我无法使用无 DSN 的连接字符串解决问题,但使用 @Erik van Asmuth 和 @krish KM 所说的 DSN file

DSN 文件位于我的 Documents 文件夹中(ODBC 管理员将其自动保存在此文件夹中。您可以将其移动到任何地方,但必须写入路径而不是文件名)

我通过 MS Access 中的VBA Code 使用以下连接字符串打开它:

stConnect = "ODBC;FILEDSN=PGUnicode32;Server=[IP-adress];Port=61000;Database=TE_TestFirst;Uid=admin;Pwd=****;"

Access 获得连接并加载表TE-TestFirst。再次感谢各位。我现在将尝试通过没有文件的连接字符串进行连接

【讨论】:

    【解决方案3】:

    我找到了一种在 MS Access 模块中创建 User-DSN 的方法,然后我用它来连接服务器。这不是很漂亮的代码,但它可以工作。对于那些寻求类似解决方案的人:

        'Creating User DSN
        strAttributes = "Description=I did this myself" & Chr(13) & "Server=[Servername/ID]" & Chr(13) & "Database=TE_TestFirst" & Chr(13) & "Username=admin" & Chr(13) & "Password=***" & Chr(13) & "Port=61000"
        DBEngine.RegisterDatabase "DSNnew", "PostgreSQL Unicode", True, strAttributes
        MsgBox "DSN has been created", vbInformation
    
        Connection String
        stConnect = "ODBC;DSN=DSNnew;Server=[IP-adress];Port=61000;Database=TE_TestFirst;Uid=admin;Pwd=****;"
    

    正如您所见,信息被嵌入了两次,我真的不喜欢,但目前还可以。您可以使用 ODBC 管理员检查您创建的 DSN。

    可以找到原码here

    此外,code 是我们将表从服务器获取到 MS Access 的方式。尽管该示例是关于 SQL Server 的,但它也适用于 PostgreSQL! (我现在看到这边也提供了创建DSN的解决方案)

    【讨论】:

      【解决方案4】:

      最后我们做了以下事情:

      使用如上所示编写的连接字符串“PostgreSQL Unicode(x32)” + 使用different script 连接

      它现在可以正常工作并且没有 DSN :)

      【讨论】:

      • 您能分享一下您用来创建与您的 postgres 服务器的 DSNless 连接的代码吗?我在连接对我的 postgres 数据库的访问时遇到问题,非常感谢您对此提供的帮助
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 2019-10-08
      • 2013-03-16
      相关资源
      最近更新 更多