Zoeken…


Hoe ADODB.Connection te gebruiken in VBA?

Voorwaarden:

Voeg de volgende referenties toe aan het project:

  • Microsoft ActiveX Data Objects 2.8 Bibliotheek

  • Microsoft ActiveX Data Objects Recordset 2.8 Bibliotheek

voer hier de afbeeldingsbeschrijving in

Geef variabelen aan

Private mDataBase As New ADODB.Connection
Private mRS As New ADODB.Recordset
Private mCmd As New ADODB.Command

Maak verbinding

een. met Windows-verificatie

Private Sub OpenConnection(pServer As String, pCatalog As String)
    Call mDataBase.Open("Provider=SQLOLEDB;Initial Catalog=" & pCatalog & ";Data Source=" & pServer & ";Integrated Security=SSPI")
    mCmd.ActiveConnection = mDataBase
End Sub

b. met SQL Server-verificatie

Private Sub OpenConnection2(pServer As String, pCatalog As String, pUser As String, pPsw As String)
    Call mDataBase.Open("Provider=SQLOLEDB;Initial Catalog=" & pCatalog & ";Data Source=" & pServer & ";Integrated Security=SSPI;User ID=" & pUser & ";Password=" & pPsw)
    mCmd.ActiveConnection = mDataBase
End Sub

Voer sql-opdracht uit

Private Sub ExecuteCmd(sql As String)
    mCmd.CommandText = sql
    Set mRS = mCmd.Execute
End Sub

Gegevens lezen uit recordset

Private Sub ReadRS()
    Do While Not (mRS.EOF)
        Debug.Print "ShipperID: " & mRS.Fields("ShipperID").Value & " CompanyName: " & mRS.Fields("CompanyName").Value & " Phone: " & mRS.Fields("Phone").Value
        Call mRS.MoveNext
    Loop
End Sub

Hechte band

Private Sub CloseConnection()
    Call mDataBase.Close
    Set mRS = Nothing
    Set mCmd = Nothing
    Set mDataBase = Nothing
End Sub

Hoe te gebruiken?

Public Sub Program()
    Call OpenConnection("ServerName", "NORTHWND")
    Call ExecuteCmd("INSERT INTO [NORTHWND].[dbo].[Shippers]([CompanyName],[Phone]) Values ('speedy shipping','(503) 555-1234')")
    Call ExecuteCmd("SELECT * FROM [NORTHWND].[dbo].[Shippers]")
    Call ReadRS
    Call CloseConnection
End Sub

Resultaat

Verzender-ID: 1 Bedrijfsnaam: Speedy Express Telefoon: (503) 555-9831

Verzender-ID: 2 Bedrijfsnaam: Verenigd Pakket Telefoon: (503) 555-3199

Verzender-ID: 3 Bedrijfsnaam: Federale verzending Telefoon: (503) 555-9931

Verzender-ID: 4 Bedrijfsnaam: snelle verzending Telefoon: (503) 555-1234



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow