2012-11-05 77 views
8

Có thể tạo truy vấn như SELECT từ VBA trong Excel, vì vậy tôi có thể truy vấn DB PostgreSQL từ Excel không?Kết nối Excel với PostgreSQL qua VBA

Nếu có thể, vui lòng giải thích cho tôi cách kết nối với cơ sở dữ liệu. Tôi đã tìm kiếm trong Google nhưng không tìm thấy kết quả nào.

Trả lời

6

Tạo bảng hoặc dạng xem trong PostgreSQL mô tả dữ liệu bạn muốn.

Sử dụng kết nối ODBC hoặc ADO từ VBA để kết nối với PostgreSQL. Nếu sử dụng ODBC, bạn sẽ cần phải tạo một DSN qua odbcad32.exe sau đó sử dụng DSN trong VB, nó không phải là dễ dàng để chỉ kết nối trực tiếp.

Xem:

Better written eample that uses Oracle, nhưng các nguyên tắc đều giống nhau - ODBC/ADO.

7

Dưới đây là một số mã có thể sử dụng làm tham chiếu. Hy vọng nó giúp.

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 
0

Ngay cả đối với Windows 64 bit, Excel VBA cần 32-bit ODBC driver.

Tạo DSN qua %windir%\SysWOW64\odbcad32.exe. Thật vậy, gõ odbcad32.exe điểm đối với phiên bản 64-bit, nơi bạn không thể tìm thấy các trình điều khiển 32-bit thích hợp theo mặc định.

Nguồn: https://github.com/windweller/postgresql-excel-addIn

+0

@ Câu trả lời của Craig (tốt và chi tiết hơn của bạn) đã chỉ ra vấn đề 32 bit. Bạn có thực sự thêm bất kỳ giá trị nào vào nó với câu trả lời này không? – Alexander

+0

Trên thực tế, tôi ** không thể ** kết nối Excel với PostgreSQL qua VBA với câu trả lời của Craig, cũng như không phải với tất cả các câu trả lời khác trên StackOverflow. Không đề cập đến vấn đề tiềm năng với 'odbcad32.exe'. Nó có thể hiển nhiên đối với một số nhưng không phải cho tôi và, bởi số lượng các chủ đề chưa được trả lời trên web, tôi đoán tôi không đơn độc. Bổ trợ Excel trên Github không hoạt động do một vấn đề định dạng nhưng từ ngữ là tuyệt vời để giải thích các thủ tục để làm theo. Nếu bạn không muốn xuất bản câu trả lời của tôi, tôi sẽ không giận nhưng nhiều người sẽ gặp phải cùng một vấn đề giống như tôi trong tương lai. – Candide

Các vấn đề liên quan