PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Używanie ADO w VBA do łączenia się z PostgreSQL

Nie chcę używać DSN, ponieważ używam sterownika ODBC w przeciwieństwie do OLE DB. Odwołując się do DSN, powyższy kod działa z bardzo niewielkimi zmianami.

Zobacz to pytanie, aby dowiedzieć się, jak znalazłem odpowiedź, gdy zacząłem podejrzewać problem OLE DB/ODBC.Czy ADO działa ze sterownikami ODBC, czy tylko z dostawcami OLE DB?

Nowy kod tutaj:

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

Systemowe DSN jest skonfigurowane do używania sterownika PostgreSQL Unicode. Zdecydowałem się nie używać OLE DB, mimo że jest dostępny dostawca. Jeśli spojrzysz na PGFoundry, zobaczysz, że ma wiele problemów i nie był aktualizowany od kilku lat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskiwanie wyników między dwiema datami w PostgreSQL

  2. Hibernacja problemu z pobieraniem bajtów postgres

  3. pgadmin4 :nie można skontaktować się z serwerem aplikacji postgresql.

  4. Jak uaktualnić do PostgreSQL 11 dla Ubuntu 18.04?

  5. Postgres:zmodyfikuj każdy element tablicy