sql >> Database >  >> RDS >> PostgreSQL

ADO in VBA gebruiken om verbinding te maken met PostgreSQL

Ik gebruik geen DSN omdat ik een ODBC-stuurprogramma gebruik in plaats van OLE DB. Door te verwijzen naar een DSN, werkt de bovenstaande code met zeer weinig wijzigingen.

Zie deze vraag voor hoe ik het antwoord vond toen ik OLE DB/ODBC begon te vermoeden voor het probleem.Werkt ADO met ODBC-stuurprogramma's of alleen OLE DB-providers?

Nieuwe code hier:

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

De systeem-DSN is geconfigureerd om het PostgreSQL Unicode-stuurprogramma te gebruiken. Ik heb ervoor gekozen om OLE DB niet te gebruiken, ook al is er een provider beschikbaar. Als je naar PGFoundry kijkt, zul je zien dat het veel problemen heeft en al jaren niet is bijgewerkt.



  1. Kan een nummer worden gebruikt om een ​​MySQL-tabelkolom een ​​naam te geven?

  2. Django:dubbele sleutelwaarde schendt unieke beperking

  3. Hoe kan ik cPanel gebruiken om php-bestanden en database te uploaden?

  4. Optimalisatie van MySQL-ophaaltijd