4

我无法连接到我们的postgres服务器。我得到了用于将 ms 访问连接到我们的 SQL Server 的代码。它应该是无DSN 的,我已经安装了一个ODBC-driver,现在我一直在寻找正确的连接字符串来写入 access'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 版本之外,没有任何效果。我从各个方面复制了无数的连接字符串,也许我正在监督什么?

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

4

4 回答 4

2

我找到了一种在 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。

你可以在这里找到原始代码

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

于 2017-12-15T10:45:31.120 回答
1

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

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

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

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

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

于 2017-12-14T13:58:00.940 回答
1

最后我们做了以下事情:

使用如上所示编写的连接字符串“PostgreSQL Unicode(x32)” + 使用不同的脚本连接到

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

于 2018-01-26T11:12:11.437 回答
0

像这样的东西:

stConnect = "Driver={PostgreSQL Unicode(x64)};Servername=dbtest;Port=5432;UID=postgres;Database=postgres;Password=****";
于 2017-12-13T15:59:10.717 回答