juli 17, 2017

De ontwikkeling van Microsoft Access

Access slaat alle database tabellen, query’s, formulieren, rapporten, macro’s en modules in de Access Jet-database op als één bestand.

Voor het ontwikkelen van queries, biedt Access een “Query Designer”, een grafische userinterface die gebruikers in staat stelt om zonder kennis van Structured Query Language queries te bouwen. In de Query Designer kunnen gebruikers de gegevensbronnen van de query (wat tabellen of query’s kunnen zijn) tonen en de velden selecteren die ze willen hebben, door te klikken en naar het rooster te slepen. Men kan koppelingen maken door erop te klikken en velden in tabellen naar velden in andere tabellen te slepen. Access stelt gebruikers in staat de SQL-code te bekijken en desgewenst te manipuleren. Elke Access-tabel, inclusief gekoppelde tabellen uit verschillende gegevensbronnen, kan in een query worden gebruikt.

Access ondersteunt ook het maken van “pass-through-query’s”. Deze stukjes SQL-code kunnen externe gegevensbronnen adresseren door ODBC-verbindingen op de lokale machine te gebruiken. Dit stelt gebruikers in staat om gegevens aan te spreken die buiten het Access-programma zijn opgeslagen, zonder gekoppelde tabellen of Jet te hoeven gebruiken. Gebruikers kunnen de pass-through-query’s bouwen met behulp van de SQL-syntaxis die door de externe gegevensbron wordt ondersteund.

Tijdens het ontwikkelen van rapporten (in “Design View”) zullen toevoegingen of wijzigingen van besturingselementen elke gelinkte query op de achtergrond uitvoeren en de ontwerper is gedwongen te wachten tot de records worden geretourneerd alvorens weer een wijziging te kunnen aanbrfengen. Deze functie kan niet worden uitgeschakeld.

Niet-programmeurs kunnen de macrofunctie gebruiken om eenvoudige taken te automatiseren door middel van een reeks van drop-down selecties. Met macro’s kunnen gebruikers eenvoudig opdrachten aaneen rijgen, zoals queries uitvoeren, gegevens importeren of exporteren, formulieren openen en sluiten, rapporten bekijken en afdrukken, enz. Macro’s ondersteunen elementaire logica (IF-voorwaarden) en de mogelijkheid om andere macro’s aan te roepen. Macro’s kunnen ook sub-macro’s bevatten die vergelijkbaar zijn met subroutines. In Access 2007 bevatten uitgebreide macro’s foutafhandeling en ondersteuning voor tijdelijke variabelen. Access 2007 introduceerde ook ingebouwde macro’s die in feite eigenschappen van een objectevent zijn. Dit elimineerde de noodzaak om macro’s als afzonderlijke objecten op te slaan. Macro’s werden echter tot aan Access 2013 beperkt in hun functionaliteit door een gebrek aan programmalussen en geavanceerde coderingslogica. De mogelijkheden van macro’s werden, na de aanzienlijke verbeteringen geïntroduceerd in Access 2013, volledig vergelijkbaar met VBA. Door een sterk verbeterde interface en tools in Microsoft SharePoint maakten ze uitgebreide webgebaseerde applicatie-implementaties praktisch, maar ook op de traditionele Windows-desktops.

Net als bij andere producten in de Microsoft Office-suite, is Microsoft VBA ook een in Access gebruikte programmeertaal. Het is vergelijkbaar met Visual Basic 6.0 (VB6) en de code wordt opgeslagen in modules, klassen en code achter formulieren en rapporten. Om een rijker, efficiënter en beter onderhoudbaar eindproduct met goede foutafhandeling te maken, worden de meeste professionele Access-toepassingen ontwikkeld met behulp van VBA-programmeertaal in plaats van macro’s, behalve wanneer webtoepassing een bedrijfsvereiste is.

Om gegevens in tabellen en query’s in VBA of macro’s te manipuleren, biedt Microsoft twee databasetoegang bibliotheken van COM-onderdelen aan:

  1. Data Access Objects (DAO) (alleen 32-bits), welke in Access en Windows is opgenomen en in Microsoft Access 2007 naar ACE evolueerde voor de ACCDE database-indeling
  2. ActiveX Data Objects (ADO) (zowel 32-bits als 64-bits versies)

Ontwikkelaars kunnen naast DAO en ADO ook OLE DB en ODBC gebruiken voor het ontwikkelen van native C/C++ programma’s voor Access. Voor ADP’s en het direct manipuleren van SQL Server-gegevens is ADO vereist. DAO is het meest geschikt voor het beheren van gegevens in Access/Jet-databases, en de enige manier om complexe veldtypen in ACCDB-tabellen te manipuleren.

In de database-container of het navigatievenster in Access 2007 en latere versies, categoriseert het systeem automatisch elk object per type (bijv. tabel, query, macro). Veel Access ontwikkelaars gebruiken de Leszynski naamconventie, hoewel dit niet universeel is; het is een programmeertaal-conventie, geen voor DBMS afgedwongen regel. Het is vooral nuttig in VBA, waar verwijzingen naar objectnamen het soort gegevens niet altijd benoemt (zoals tbl voor tabellen, qry voor queries).

Ontwikkelaars gebruiken Microsoft Access meestal voor individuele en werkgroepprojecten (de snelheidskarakterisering van Access 97 werd gedaan voor 32 gebruikers). Sinds Access 97, en met Access 2003 en 2007, is Microsoft Access en de hardware aanzienlijk verder ontwikkeld. Databases van minder dan 1 GB in omvang (die nu geheel in het RAM past) en 200 gelijktijdige gebruikers liggen ruim binnen de mogelijkheden van Microsoft Access. Natuurlijk hangen de prestaties samen met het ontwerp en de taken van de database. Schijf-intensieve werkzaamheden zoals complexe zoekopdrachten en queries nemen de meeste tijd in beslag.

Als gegevens van een Microsoft Access-database in RAM kunnen worden opgeslagen, kan de verwerkingssnelheid aanzienlijk verbeteren wanneer er maar één enkele gebruiker is of als gegevens niet wijzigen. In het verleden was het effect van packet latency bij het vergrendelen van records in Access-databases de oorzaak van de trage werking op een Virtual Private Network (VPN) of een Wide Area Network (WAN) tegen een Jet-database. Vanaf 2010 hebben breedbandverbindingen dit probleem verminderd. Prestaties kunnen ook worden verbeterd als er tijdens de sessie een continue verbinding naar de back-end database is, in plaats van het voor elke tabel openen en sluiten van de toegang. Als Access-database prestaties over VPN of WAN verminderen, dan kan een client die remote desktop (zoals Microsoft Terminal Services) gebruikt een effectieve oplossing zijn. Access-databases die zijn gekoppeld aan SQL Server of Access databases werken goed via VPN’s en WAN’s.

In juli 2011 erkende Microsoft een af en toe optredend prestatieprobleem met queries in alle versies van Access en Windows 7 en Windows Server 2008 R2, omdat de aard van het resource management in nieuwere besturingssystemen heel erg verschillend was. Dit probleem beïnvloedde queryprestaties enorm, zowel in Access 2003 en eerder met de Jet Database Engine code, als met Access 2007 en later met de Access Database Engine (ACE). Microsoft heeft hotfixes KB2553029 voor Access 2007 en KB2553116 voor Access 2010 uitgebracht, maar zal het probleem met Jet 4.0 niet oplossen omdat het geen basisondersteuning meer geeft.

In eerdere versies van Microsoft Access vereist de mogelijkheid om applicaties te verspreiden de aankoop van de Developer Toolkit; in Access 2007, 2010 en Access 2013 wordt de “Runtime Only” versie aangeboden als een gratis download, en maakt de distributie van royalty-vrije toepassingen mogelijk op Windows XP, Vista, 7 en Windows 8.x.

Split database-architectuur

Microsoft Access applicaties kunnen gebruik maken van een split-database architectuur. De enkelvoudige database kan worden onderverdeeld in een apart back-end-bestand dat de gegevenstabellen bevat (gedeeld op een bestandsserver) en een front-end (met applicatieobjecten, zoals query’s, formulieren, rapporten, macro’s en modules). De front-end Access-applicatie wordt naar het bureaublad van elke gebruiker gedistribueerd en aan de gedeelde database gekoppeld. Met deze aanpak heeft elke gebruiker een exemplaar van Microsoft Access (of de runtime versie) op hun computer geïnstalleerd, samen met hun applicatiedatabase. Dit vermindert het netwerkverkeer omdat de applicatie niet voor elk gebruik wordt opgehaald. De front-end database kan nog wel lokale tabellen bevatten voor het opslaan van instellingen van een gebruiker of tijdelijke gegevens. Dit split-database ontwerp maakt ook de ontwikkeling van de applicatie onafhankelijk van de gegevens mogelijk. Een nadeel is dat gebruikers verschillende wijzigingen kunnen maken aan hun eigen lokale kopie van de applicatie en dit maakt versiebeheer wel lastiger. Wanneer een nieuwe versie klaar staat, wordt de front-end database vervangen zonder de gegevens-database te beïnvloeden. Microsoft Access heeft twee ingebouwde hulpprogramma’s, Database Splitter en Linked Table Manager, om deze architectuur te ondersteunen.

Gekoppelde tabellen in Access gebruiken absolute in plaats van relatieve paden, zodat de ontwikkelomgeving ofwel hetzelfde pad moet hebben als de productieomgeving of er kan een “dynamic-linker” routine in VBA worden geschreven.

Voor erg grote Access-databases kan dit problemen met de prestaties opleveren, en in deze omstandigheden moet een SQL back-end worden overwogen. Dit is minder een probleem als de hele database in het RAM van de PC past, aangezien Access gegevens en indexen in cache bewaart.

WhatsApp Ons whatsapp