将 MS Access 连接到 PostgreSQL 服务器
Connecting MS Access to PostgreSQL Server
我无法连接到我们的 postgres 服务器。我获得了用于连接 ms 访问我们 SQL 服务器的代码。它应该是 DSN-less,我已经安装了一个 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;"
我读到 64 位 Pcs 需要被赋予 "Data Provider"。然而,除了我们不想要的 DSN 版本之外,什么都不起作用。我从各个方面复制了无数连接字符串,也许我在监督什么?
期待您的回复并提前致谢。
布丁洛夫
像这样:
stConnect = "Driver={PostgreSQL Unicode(x64)};Servername=dbtest;Port=5432;UID=postgres;Database=postgres;Password=****";
我无法使用无 DSN 的连接字符串解决问题,但使用 DSN file
就像@Erik van Asmuth 和@krish KM 说的那样。
DSN 文件位于我的 Documents 文件夹中(ODBC Administrator 自动将其保存在此文件夹中。您可以将其移动到任何地方,但是您必须写路径而不是文件名)
我使用以下连接字符串在 MS Access 中通过 VBA Code
打开它:
stConnect = "ODBC;FILEDSN=PGUnicode32;Server=[IP-adress];Port=61000;Database=TE_TestFirst;Uid=admin;Pwd=****;"
Access 获得连接并加载 table TE-TestFirst
。再次感谢你们。我现在将尝试通过没有文件的连接字符串进行连接
我找到了一种在 MS Access 模块中创建用户 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 服务器的,但它也适用于 PostgreSQL! (我现在看到这边也提供了创建DSN的解决方案)
最后我们做了以下事情:
使用连接字符串 "PostgreSQL Unicode(x32)" 如上所示 + 使用 different script 连接到
它现在工作正常并且没有 DSN :)
我无法连接到我们的 postgres 服务器。我获得了用于连接 ms 访问我们 SQL 服务器的代码。它应该是 DSN-less,我已经安装了一个 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;"
我读到 64 位 Pcs 需要被赋予 "Data Provider"。然而,除了我们不想要的 DSN 版本之外,什么都不起作用。我从各个方面复制了无数连接字符串,也许我在监督什么?
期待您的回复并提前致谢。 布丁洛夫
像这样:
stConnect = "Driver={PostgreSQL Unicode(x64)};Servername=dbtest;Port=5432;UID=postgres;Database=postgres;Password=****";
我无法使用无 DSN 的连接字符串解决问题,但使用 DSN file
就像@Erik van Asmuth 和@krish KM 说的那样。
DSN 文件位于我的 Documents 文件夹中(ODBC Administrator 自动将其保存在此文件夹中。您可以将其移动到任何地方,但是您必须写路径而不是文件名)
我使用以下连接字符串在 MS Access 中通过 VBA Code
打开它:
stConnect = "ODBC;FILEDSN=PGUnicode32;Server=[IP-adress];Port=61000;Database=TE_TestFirst;Uid=admin;Pwd=****;"
Access 获得连接并加载 table TE-TestFirst
。再次感谢你们。我现在将尝试通过没有文件的连接字符串进行连接
我找到了一种在 MS Access 模块中创建用户 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 服务器的,但它也适用于 PostgreSQL! (我现在看到这边也提供了创建DSN的解决方案)
最后我们做了以下事情:
使用连接字符串 "PostgreSQL Unicode(x32)" 如上所示 + 使用 different script 连接到
它现在工作正常并且没有 DSN :)