是否可以SELECT
从 Excel 中的 VBA 进行查询,以便我可以从 Excel 中查询 PostgreSQL 数据库?
如果可能,请解释我如何连接到数据库。我在谷歌中寻找,但没有找到任何结果。
是否可以SELECT
从 Excel 中的 VBA 进行查询,以便我可以从 Excel 中查询 PostgreSQL 数据库?
如果可能,请解释我如何连接到数据库。我在谷歌中寻找,但没有找到任何结果。
这里有一些代码可以作为参考。希望能帮助到你。
Sub SelectBasic()
Dim objDb_con
Dim strSomeValue As String
Set objDb_con = CreateObject("ADODB.Connection")
Set Rsdatatype = CreateObject("ADODB.RecordSet")
glbConnString = Trim(ActiveSheet.Range("B1").Value)
//Connection string format:Driver={PostgreSQL Unicode};Database=MyDB;server=192.16*.*.**;UID=USERID;Pwd=pasword //comment it
If glbConnString = "" Then
MsgBox "Enter the Connection String"
Else:
objDb_con.Open glbConnString
strSql = "select strSomeValue from SOMETABLE where Something=1"
Rsdatatype.Open strSql, objDb_con, adOpenKeyset, adLockpessimistic
If Rsdatatype.EOF = False Then strSomeValue = Rsdatatype.Fields(0).Value
Rsdatatype.Close
End If
objDb_con.Close
End Sub
在 PostgreSQL 中创建一个表或视图来描述您想要的数据。
使用来自 VBA 的 ODBC 或 ADO 连接来连接到 PostgreSQL。如果使用 ODBC,您需要创建一个 DSN,odbcad32.exe
然后在 VB 中使用 DSN,直接连接并不容易。
看:
使用 Oracle 编写的更好的示例,但原理相同 - ODBC/ADO。
即使是 64 位 Windows,Excel VBA 也需要32 位 ODBC 驱动程序。
通过创建 DSN %windir%\SysWOW64\odbcad32.exe
。实际上,键入odbcad32.exe
指向 64 位版本,默认情况下您找不到合适的 32 位驱动程序。