PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menggunakan ADO di VBA untuk terhubung ke PostgreSQL

Saya tidak ingin menggunakan DSN karena saya menggunakan driver ODBC sebagai lawan dari OLE DB. Dengan mereferensikan DSN, kode di atas berfungsi dengan sangat sedikit perubahan.

Lihat pertanyaan ini untuk mengetahui bagaimana saya menemukan jawabannya setelah saya mulai mencurigai masalah OLE DB/ODBC.Apakah ADO bekerja dengan driver ODBC atau hanya penyedia OLE DB?

Kode Baru di sini:

Sub GetCustomers()
Dim oConn As New ADODB.connection
Dim cmd As New ADODB.Command
' Connection Parameters
Dim strUsername As String
Dim strPassword As String
Dim strServerAddress As String
Dim strDatabase As String
' User:
strUsername = Sheets("CONFIG").Range("B4").Value
' Password:
strPassword = Sheets("CONFIG").Range("B5").Value
' Server Address:
strServerAddress = Sheets("CONFIG").Range("B6").Value
' Database
strDatabase = Sheets("CONFIG").Range("B3").Value


oConn.Open "DSN=my_system_dsn;" & _
    "Database=" & strDatabase & ";" & _
    "Uid=" & strUsername & ";" & _
    "Pwd=" & strPassword

Set xlSheet = Sheets("CUSTOMERS")
xlSheet.Activate
Range("A3").Activate
Selection.CurrentRegion.Select
Selection.ClearContents
Range("A1").Select

Dim strSQL As String
strSQL = "SELECT * FROM customers"

cmd.CommandType = ADODB.CommandTypeEnum.adCmdText
cmd.ActiveConnection = oConn
cmd.CommandText = strSQL

Set rs = New ADODB.Recordset
Set rs = cmd.Execute

For i = 1 To rs.Fields.Count
    ActiveSheet.Cells(3, i).Value = rs.Fields(i - 1).Name
Next i

xlSheet.Range(xlSheet.Cells(3, 1), _
    xlSheet.Cells(3, rs.Fields.Count)).Font.Bold = True

ActiveSheet.Range("A4").CopyFromRecordset rs

xlSheet.Select
Range("A3").Select
Selection.CurrentRegion.Select
Selection.Columns.AutoFit
Range("A1").Select

rs.Close
oConn.Close

Set cmd = Nothing
Set param = Nothing
Set rs = Nothing
Set cnn = Nothing
Set xlSheet = Nothing
End Sub

Sistem DSN dikonfigurasi untuk menggunakan driver PostgreSQL Unicode. Saya memilih untuk tidak menggunakan OLE DB meskipun ada penyedia yang tersedia. Jika Anda melihat PGFoundry, Anda akan melihatnya memiliki banyak masalah dan belum diperbarui dalam beberapa tahun.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara unpivot tabel di PostgreSQL

  2. Buat indeks multikolom untuk menegakkan keunikan

  3. Kesalahan Heroku:ActionView::Template::Error (metode `captcha' tidak ditentukan untuk #<Message:0x007fc9df016930>)

  4. Array multidimensi PostgreSQL

  5. IN Klausa dengan NULL atau IS NULL