9

是否可以SELECT从 Excel 中的 VBA 进行查询,以便我可以从 Excel 中查询 PostgreSQL 数据库?

如果可能,请解释我如何连接到数据库。我在谷歌中寻找,但没有找到任何结果。

4

3 回答 3

8

这里有一些代码可以作为参考。希望能帮助到你。

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
于 2012-11-05T11:20:09.557 回答
7

在 PostgreSQL 中创建一个表或视图来描述您想要的数据。

使用来自 VBA 的 ODBC 或 ADO 连接来连接到 PostgreSQL。如果使用 ODBC,您需要创建一个 DSN,odbcad32.exe然后在 VB 中使用 DSN,直接连接并不容易。

看:

使用 Oracle 编写的更好的示例,但原理相同 - ODBC/ADO。

于 2012-11-05T10:56:06.770 回答
0

即使是 64 位 Windows,Excel VBA 也需要32 位 ODBC 驱动程序

通过创建 DSN %windir%\SysWOW64\odbcad32.exe。实际上,键入odbcad32.exe指向 64 位版本,默认情况下您找不到合适的 32 位驱动程序。

来源:https ://github.com/windweller/postgresql-excel-addIn

于 2017-06-20T09:51:12.340 回答