【发布时间】:2020-05-25 15:34:00
【问题描述】:
我看过几个类似的问题,所以这并不是因为缺乏尝试。 我想使用 VBA 创建一个到 Postgres 的 DSN。我特别不想在 Access 中使用无 DSN 连接。我怀疑它可能是我的连接字符串而不是代码,但我不确定,我没有收到任何错误,它只是不成功。
我的代码如下:
Option Compare Database
Option Explicit
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
(ByVal hwndParent As Long, ByVal fRequest As Long, _
ByVal lpszDriver As String, ByVal lpszAttributes As String) _
As Long
Private Const ODBC_ADD_SYS_DSN = 4
Public Function CreateDSN(Driver As String, Attributes As _
String) As Boolean
CreateDSN = SQLConfigDataSource(0&, ODBC_ADD_SYS_DSN, _
Driver, Attributes)
End Function
Sub test()
Dim strConnection As String
strConnection = "ODBC;DSN=Postgres_Test;Driver=PostgreSQL Unicode;Server=************.*********.***.****;Port=*****;Database=example;Uid=********;Pwd=****************;"
Debug.Print CreateDSN("PostgreSQL Unicode", strConnection)
End Sub
我在这里只需要在即时窗口中设置 False。 如果有人可以确认它是否只是连接字符串(以及正确的语法是什么),那将是有用的。我尝试在 Access 中查看链接表的属性,其中我手动创建了 DSN 及其那个和 this,我用来生成我已经使用的那个。
【问题讨论】:
-
我看不到您实际注册数据库的位置。这对我来说很好: Dim strAttributes As String strAttributes = "Database=mydatabase_Zentral" & _ vbCr & "Description=mydatab_ZENTRAL" & _ vbCr & "OemToAnsi=No" & _ vbCr & "Server=serverXYZ01" & _ vbCr & "Trusted_Connection =Yes" DBEngine.RegisterDatabase "my_database", "SQL Server", True, strAttributes
标签: vba postgresql ms-access odbc dsn