De volgende secties bevatten nuttige informatie over VBA. De objectnamen worden opgegeven, zodat u ze eenvoudig kunt onderzoeken in de database Northwind 2.0 Starter Edition.
VBA (Visual Basic for Applications) is de programmeertaal die wordt gebruikt in alle Microsoft 365-producten, niet alleen in Access. Het wordt voornamelijk hier beschreven: Documentatie voor ontwikkelaars openen.Zie Inleiding tot Programmeren in Access om aan de slag te gaan.
Wanneer u naar informatie zoekt, moet u zoeken naar specifieke voorbeelden van Access en Microsoft Access opnemen in de zoekterm. Oplossingen voor de andere Microsoft 365-producten werken vaak wel, maar kunnen wijzigingen vereisen.
Microsoft Access is een volwassen product. Dat betekent dat er veel voorbeelden zijn, wat geweldig voor u is. Dit betekent ook dat oudere boeken over Access-programmering nog steeds geschikt zijn om te bekijken. Veel van de oudere boeken zijn nog steeds beschikbaar op gebruikte boekensites voor een fractie van hun oorspronkelijke kosten.
Microsoft Access-bestanden zijn Microsoft 365-bestanden. Microsoft 365-bestanden moeten zich op een vertrouwde locatie bevinden of de inhoud ervan moeten zijn ingeschakeld. Deze items worden als veilig beschouwd omdat u ze hebt gemaakt of omdat ze afkomstig zijn van een betrouwbare bron. Deze controle vindt plaats telkens wanneer u een Microsoft 365-bestand opent. Vanaf hier wordt hiernaar verwezen als vertrouwd/ingeschakeld. Als een nieuwe versie van de toepassing wordt uitgebracht en geopend vanaf een niet-vertrouwde locatie, wordt het inschakelen van de inhoud herhaald. Zie Vertrouwde locaties voor Microsoft 365-bestanden, Beslissen of u een database wilt vertrouwen en Een vertrouwde locatie toevoegen, verwijderen of wijzigen in Microsoft 365 voor meer informatie.
Macro's, functies en subprocedures zijn de wijze waarop u bedrijfslogica implementeert in uw Access-database.
Besturingselementen in een formulier (zoals knoppen, tekstvakken, labels, enzovoort) kunnen hun gebeurtenissen (zoals klikken op het besturingselement) gebruiken om andere processen te activeren, zoals het toevoegen, verwijderen van records of het openen van formulieren. Deze processen kunnen worden geïmplementeerd met behulp van macro's of VBA. Northwind maakt voornamelijk gebruik van macro's en sommige VBA. Zie Macroactie Uitvoeren voor meer informatie.
Sommige typen besturingselementen hebben ingebouwde wizards waarmee automatisch een macro wordt gemaakt. Als u bijvoorbeeld een opdrachtknop toevoegt aan een formulier, wordt er een wizard geopend die verschillende functionaliteitsopties voor de knop biedt. Als u een keuzelijst met invoervak toevoegt, wordt een wizard geopend die kan worden geconfigureerd om een bepaalde record op het formulier te vinden.
Het navigatiedeelvenster is de belangrijkste manier om al uw databaseobjecten weer te geven en te openen. Het wordt standaard aan de linkerkant van het Access-venster weergegeven. Het navigatiedeelvenster Northwind 2.0 Starter Edition is aangepast. We hebben een aangepaste categorie gemaakt met de naam Northwind Starter 2.0. Hierdoor kunnen we de objecten ordenen op functioneel gebied. Zie Het navigatiedeelvenster aanpassen voor meer informatie.
Het is belangrijk dat u meer te weten komt over het bereik en de zichtbaarheid in Access en Microsoft 365. Bereik verwijst naar de beschikbaarheid van een variabele, constante of procedure voor gebruik door een andere procedure. Er zijn drie bereikniveaus: procedureniveau, privémoduleniveau en openbaar moduleniveau. U bepaalt het bereik van een variabele wanneer u deze declareert. Het is een goed idee om alle variabelen expliciet te declareren om naamconflictfouten tussen variabelen met verschillende bereiken te voorkomen. Alle modules hebben twee instructieinstructies: Option Compare Database en Option Explicit. Zie Inzicht in bereik en zichtbaarheid, Openbare instructie, Privé-instructie, Statische instructie en Inzicht in de levensduur van variabelen voor meer informatie.
Soms moet er een variabele bestaan nadat het object dat deze heeft gemaakt buiten het bereik valt. Er zijn drie primaire manieren om dit te doen: Openbare variabelen, TempVars en het opslaan van de waarden in een lokale tabel. Elk van deze heeft voor- en nadelen. Veel ontwikkelaars gebruiken een combinatie hiervan.
Openbare variabelen en TempVars bestaan voor de huidige sessie en vallen buiten het bereik wanneer de toepassing wordt gesloten. Wat gebeurt er als u gebruikersspecifieke variabelen wilt behouden in hun sessies? U kunt deze typen waarden opslaan in een lokale tabel. In Northwind 2.0 Starter Edition hebben we deze waarden in een tabel met de naam SystemSettings. Een waarde in de tabel is bijvoorbeeld 'ShowWelcome'. Deze waarde geeft aan of u het welkomstscherm wilt zien wanneer u zich aanmeldt of niet.
Als u besturingswizards hebt gebruikt die zijn ingebouwd in Access, weet u dat als er een macro wordt gemaakt, er vaak helemaal geen foutafhandeling is en dat als VBA wordt gemaakt, deze mogelijk is beperkt tot een MsgBox-functie, Err.Description-stijl.
In Northwind 2.0 Starter Edition hebben we een zogenaamde globale fouthandler geïmplementeerd. Fouten die in een procedure optreden, roepen een functie aan op globaal niveau om de fout weer te geven. Het grote voordeel is dat code consistent is en als het bericht moet worden gewijzigd, bijvoorbeeld door het foutnummer weer te geven of de fout in een bestand te registreren, kan dit slechts op één plaats worden gedaan.
clsErrorHandler is de klassemodule die de foutafhandelingscode implementeert. Een klassemodule houdt alle hoofd- en helperfuncties bij elkaar in één eenheid, waardoor de code beter is ingekapseld. De macro AutoExec roept uiteindelijk de opstartfunctie aan in modStartup, maakt een exemplaar van clsErrorHandler en slaat deze op als een globale variabele, zodat deze in de hele toepassing kan worden gebruikt.
In feite is de foutafhandelingscode in de procedures zo consistent dat we deze allemaal in minder dan vijf minuten konden maken met behulp van een mooie VBA-code die elke procedure heeft uitgerust met de juiste fouthandler. Deze code is niet opgenomen in de sjabloon.