excel-vba
SQL in Excel VBA - Best Practices
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
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