Access
Om verbinding te kunnen maken met een Access database wordt er gebruik gemaakt van de ADO bibliotheek. Vervolgens wordt via een connectiestring en een recordset de database bewerkt met SQL.
De verwijzing die tot stand moet worden gebracht is naar de ActiveX DataObjects 2.8. Deze naam verklapt tegelijkertijd de afkorting van ADO.
De onderstaande klassenmodule clsADO handelt het bewerken van een Access- of een MariaDB database af. Desgewenst kan deze klassenmodule ook worden uitgebreid met de onderstaande connectiestring om een Excel-werkblad te bewerken.
Case Is = "Excel" cn.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " & ExcelBestand & "; Extended Properties=Excel 8.0;"
Indien ADO wordt gebruik i.c.m. met een Excel-werkblad zal de tabelnaam (= werkbladnaam) in de SQL er als volgt moeten uitzien: [Contactpersonen$].
'----------------------------------------------------------------------------------------------------------------------- ' Auteur : pascalterheege.nl ' Datum : 31-3-2017 ' Object : clsADO ' Doel : waarden laden, wijzigen en verwijderen uit database (Access of MariaDB) ' Verwijzing : ActiveX Data Objects 2.8 ' Objecten : 1. Database verbinding ' 2. Database recordset ' Bronnen : https://mariadb.com/kb/en/mariadb/about-mariadb-connector-odbc/ ' Opmerking : voor het gebruik van MariaDB is gebruik gemaakt van XAMPP, een MariaDB-connector en een ODBC koppeling '----------------------------------------------------------------------------------------------------------------------- Option Explicit Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String Public Sub Openen(strDatabank As String) ' Openen databank. Initialize kan niet omgaan met parameters, vandaar een aparte procedure On Error GoTo ErrorHandler Set cn = New ADODB.Connection Select Case strDatabank Case Is = "Access" cn.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " & AccessBestand Case Is = "MariaDB" cn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=MariaDB" End Select cn.Open Exit Sub ErrorHandler: MsgBox "Kon geen verbinding maken met de database!", vbCritical End End Sub Public Sub Laden(lsb As ListBox) ' Waarden uitlezen Dim i As Integer Set rs = New ADODB.Recordset With rs .Open "SELECT * FROM Contactpersonen", cn .MoveFirst Do While Not rs.EOF With lsb .AddItem .List(i, 0) = rs.Fields("Nummer").Value .List(i, 1) = rs.Fields("Voornaam").Value .List(i, 2) = rs.Fields("Achternaam").Value End With i = i + 1 .MoveNext Loop End With Set rs = Nothing End Sub Public Sub Toevoegen(intNummer As Integer, strVoornaam As String, strAchternaam As String) ' Nieuwe record toevoegen strSQL = "INSERT INTO Contactpersonen " & _ "(Nummer, Voornaam, Achternaam) " & _ "VALUES (" & _ intNummer & ", " & _ "'" & strVoornaam & "', " & _ "'" & strAchternaam & "')" cn.Execute strSQL End Sub Public Sub Wijzig(intNummer As Integer, strVoornaam As String, strAchternaam As String) ' Aan de hand van nummer record wijzigen strSQL = "UPDATE Contactpersonen " & _ "SET Voornaam = '" & strVoornaam & "', " & _ "Achternaam = '" & strAchternaam & "' " & _ "WHERE Nummer = " & intNummer cn.Execute strSQL End Sub Public Sub Verwijder(intNummer As Integer, blnAlles As Boolean) ' Aan de hand van nummer rij verwijderen If blnAlles = True Then strSQL = "DELETE FROM Contactpersonen" Else strSQL = "DELETE FROM Contactpersonen WHERE Nummer = " & intNummer End If cn.Execute strSQL End Sub Private Sub Class_Terminate() ' Deinitialisatie ADO-objecten cn.Close Set rs = Nothing Set cn = Nothing End Sub