Zie ook elders op deze site:
|
Hebt u inhoudelijke vragen over Access die u niet in deze teksten beantwoord ziet, stel deze dan bij voorkeur bij het forum http://office.webforums.nl/forum/, u krijgt meestal dezelfde dag nog een helder antwoord van een van de deelnemers van het forum. | ||
|
|
|
Wanneer een programma van u door meerdere mensen gelijktijdig gebruikt wordt en u het programma periodiek wilt bijwerken, dan is het aan te raden om uw programma op te splitsen in twee bestanden:
|
Een gegevensbestand: dit bestand bevat alle tabellen / data. Dit wordt de back end genoemd. |
|
Een programmabestand: dit bestand bevat alle formulieren, rapporten, query’s, modules en macro’s en bevat tevens de koppelingen met de tabellen uit het gegevensbestand. Dit wordt de front end genoemd. |
Een database splitsen levert de volgende voordelen op:
|
Het onderhoud aan het programma kan plaatsvinden onafhankelijk van de data. U kunt een kopie van het programmabestand maken, deze koppelen naar een testversie van het gegevensbestand en in de kopie wijzigingen aanbrengen en testen. Als alles goed werkt, maakt u een kopie van deze kopie, zet u de koppelingen weer terug naar de werkversie van het gegevensbestand en zet u bijgewerkte versie van het programmabestand op de standaard locatie. Dit is bij voorkeur een plaats op het netwerk. |
|
U kunt meerdere versies van het front end programma maken die alle van dezelfde back end gebruik maken. U kunt bijvoorbeeld een groep gebruikers (beheerders) een uitgebreide front end aanbieden en andere gebruikers (de eindgebruikers) een beperkte versie van het programma. |
|
U kunt ook meerdere keren dezelfde front end uitzetten. In bepaalde situaties is dit zelfs noodzakelijk. Access 2000 of hoger heeft soms problemen als meerdere gebruikers gelijktijdig in eenzelfde bestand werken, het is dan bijvoorbeeld niet mogelijk voor een tweede of volgende persoon om de database te openen. Als u elke gebruiker een eigen front end aanbiedt (die alle naar dezelfde back end verwijzen) dan zijn deze foutmeldingen over en kunnen meerdere gebruikers gelijktijdig van dezelfde backend gebruik maken. |
In Access is een Wizard ingebouwd die voor u de splitsing uitvoert. Zie Extra > Databasehulpprogramma's > Database splitsen. U kunt ook zelf de database handmatig splitsen:
|
Maak voor de veiligheid eerst een reservekopie van het bestand. |
|
Maak nu (nog) een kopie van het bestand en zet deze kopie op een plek die voor alle gebruikers toegankelijk is. Hernoem deze kopie tot bijv. Data.mdb. Dit wordt uw back end bestand. |
|
Open nu het originele bestand. Verwijder alle tabellen in dit bestand. |
|
Koppel de tabellen van het kopiebestand in dit bestand: kies voor Bestand > Externe gegevens ophalen... > Tabellen koppelen, zoek het kopiebestand op en Opmerking: Tabellen met de technische gegevens over het programma en de versie van de front end en tabellen die instellingen van de front end beheren, horen bij de front end, deze tabellen neemt u dus niet op in de backend. |
|
Vervolgens kunt u in het back end bestand alle formulier, query's, rapporten, pagina's en modules verwijderen. |
|
Het is aan te raden daarna zowel de back end als de front end te comprimeren (zie Extra > Databasehulpprogramma's > Database comprimeren). |
Wanneer u de back end ooit verplaatst of hernoemd, dan moet u de koppelingen van de front end bestanden bijwerken. Verderop in deze tekst ziet u hoe dit gaat.
Voor het gegevensbestand kunt u desgewenst ook een ander soort bestandsformaat gebruiken, tabellen op een Oracle, Sybase of SQL Server server. De enige voorwaarde is dat de tabellen benaderbaar zijn met de ODBC-koppeling van uw Windows besturingssysteem.
U kunt het programmabestand ook koppelen aan bijvoorbeeld Excel werkbladen, dBase of FoxPro tabellen, aan tabellen op een MySQL server of aan tekstbestanden met een kolommenopmaak, maar dan kunt u geen referentiële integriteit vastleggen tussen de verschillende 'tabellen'. Met referentiële integriteit zoals in Access databases zorgt u er voor dat wijzigingen in de ene tabel direct bijgewerkt worden in een andere tabel, als deze aan elkaar gekoppeld zijn. Ook zijn er enkele andere beperkingen, u kunt bijvoorbeeld in een gekoppeld Excel-bestand wel records wijzigen of toevoegen, maar niet verwijderen.
Veel Access programma's zijn, zoals hiervoor is aangegeven, opgebouwd uit een gegevensbestand en een programmabestand. De tabellen uit het gegevensbestand (het gegevensbestand) moet u koppelen binnen het programmabestand. U kunt als volgt snel alle koppelingen wijzigen.
|
Plaats het gegevensbestand op de definitieve locatie. |
|
Start Access en open het programmabestand met de Shift-toets ingedrukt. |
|
Klik op Extra >> Invoegtoepassingen >> Koppelingsbeheer. |

|
Controleer of de koppelingen naar de juiste locatie van het gegevensbestand verwijzen. Is dit niet het geval, klik dan op Alles selecteren en zet het vinkje aan bij Altijd om nieuwe locatie vragen. Kilk dan op OK |

|
Zoek het gegevensbestand op en klik op Openen. |

|
De koppelingen worden nu bijgewerkt. |

|
U kunt dezelfde werkwijze ook gebruiken om een testversie van het programmabestand te koppelen met een testbestand van het gegevensbestand. |
|
Wilt u het gegevensbestand een andere naam geven, werk dan daarna de koppelingen weer bij. |
|
In het Databasevenster ziet u op het tabblad Tabellen de tabellen die gekoppeld zijn binnen een programma. Het pictogram vóór de tabelnaam geeft het soort koppeling aan: bijv. een Access-tabel, een dBase bestand/tabel, een Excel werkblad, een ODBC-bron enz. |
|
U kunt desgewenst meerdere programmabestanden aan eenzelfde gegevensbestand koppelen. U kunt dan bijvoorbeeld verschillende versies van het programmabestand aanbieden, voor verschillende gebruikersgroepen, of voor verschillende versies van Access (een programmabestand voor Access 97, een programmabestand voor Access 2000 of hoger, het gegevensbestand moet in Access 97 staan). Ook kunt u naast een productieversie ook een 'werk'versie maken waarin u extra queries ed. maakt, om programmaonderdelen te testen of de data verder te analyseren. Het is aan te raden om dit soort queries binnen een nieuw Access-bestand te maken, zodat u niet per ongeluk queries van het programma zelf wijzigt. In een werkversie die bedoeld is voor analyses kunt u zonder problemen selectie- en kruistabelqueries maken, maar u moet vanzelfsprekend oppassen met het maken en uitvoeren van verwijder-, toevoeg- en bijwerkqueries. |
Bij een gekoppelde database die in een netwerkomgeving draait is het, zeker bij een programmabestand in Access 2000, van belang dat u het gegevensbestand (het bestand met alle data) direct in de root van een schijfletter (mapping) zet. Dus niet in een submap van een submap (bijvoorbeeld i:\MijnProgrammaas\Data\MijnProgrammaDT.mdb), maar direct in de root, bij voorkeur met een korte bestandsnaam, zoals t:\prgdt.mdb. Met een submap (in een submap) hebt u erg veel overhead bij het inlezen van de data. Vooral in Access 2000 maakt dit enorm veel uit voor de performance, bij een Access 97 programmabestand merkt u het verschil niet of nauwelijks. Als u uw bestand toch in een submap wilt opslaan dan kan dat wel, maar dan moet u een mapping maken naar die directory. Bijvoorbeeld met subst. Neem in een batchbestandje een regel op als de volgende (zie ook verderop in deze tekst):
subst t: i:\MijnProgrammaas\data
In dit voorbeeld verwijst de letter t: direct naar de map waar het gegevensbestand staat.
Andere problemen met de performance van Access zijn vaak aan querie's te wijten:
|
Neem in query's op grote tabellen alleen de noodzakelijke velden op. |
| Neem in ene query alleen berekende velden op als u deze echt nodig hebt. |
| Bij de Eigenschappen van een query of bij de Eigenschap > tabblad Gegevens van een Formulier of Rapport kunt u instellen hoe u de gegevens ophaalt. Kies voor de standaardinstelling Dynamisch als u de gegevens wilt bijwereken, maar kies voor Momentopname als u de gegevens alleen wilt ophalen. Dit gaat vaak aanzienlijk sneller. Voor een rapport kunt u altijd Momentopname kiezen. |
|
Veel winst in de performance bereikt u als u de voorwaarden (Criteria) van velden in een WHERE-functie zet. U doet dit door de Selectiequery om te zetten naar een Totaal-query (klik op de Σ in de Werkbalk) en alle velden op Group By te zetten, behalve de velden waar een criterium bij staat: die zet u bij Totaal op Waar (Where). Hierdoor filtert de query direct al de juiste records en haalt alleen deze records op en haalt dus niet. Bij een gewone selectiequery haalt Access eerst alle records op en filtert dan pas de records er uit die voldoen aan de criteria uit de query. |
|
U kunt bij een query ook instellen dat u alleen de top-waarden laat zien, bijvoorbeeld de eerste 25 records. Open de query in de Ontwerpweergave, klik met de rechter muisknop in het queryvenster en kies voor Eigenschappen. Stel bij Top-waarden de gewenste waarde in. |
Er staan nog meer tips voor (of beter gezegd: tegen) slome databases op: http://www.granite.ab.ca/access/a2kslow.htm.
Wanneer u de beschikking heeft over een netwerk dan kunt u op meerdere plekken tegelijk met het programma werken. Access werkt probleemloos bij maximaal acht tot tien simultaan geopende sessies, ofwel: u kunt op bij voorkeur niet meer dan acht werkplekken tegelijk met het zelfde gegevensbestand werken.
Het gegevensbestand zet u altijd op de file server van uw netwerk, gebruikers geeft u lees- en schrijfrechten op deze map. Het programmabestand plaatst u bij voorkeur ook op de file server, maar een lokale installatie kan ook. Dit levert echter nauwelijks voordelen op, ook geen betere performance. Een lokaal geplaatst bestand is daarbij slecht te onderhouden.
Heeft u twee of meer locaties die niet hetzelfde gegevensbestand gebruiken, zet dan het gegevensbestand per locatie afzonderlijk op de file server. Maak per locatie ook een versie van het programmabestand. Stel de koppelingen in de programmabestanden in zodat ze met het juiste gegevensbestand zijn gekoppeld.
Valt het netwerk regelmatig en voor langere tijd uit, dan kunt u overwegen om een extra versie te maken die u lokaal installeert en die u koppelt met een lokaal te plaatsen gegevensbestand. Geef in deze versie wel duidelijk aan de gebruikers aan (bijvoorbeeld door een vermelding hiervan op het hoofdmenu) dat het een locale versie is, waarbij de gegevens niet op het netwerk worden opgeslagen en waarbij de gegevens niet bijgewerkt zijn. Met bijvoorbeeld een snelkoppeling naar een batchbestand op het Bureaublad kunt u de gebruikers periodiek een kopie van het gegevensbestand naar de pc laten maken.
Voorbeeld van het batchbestand:
xcopy i:\mijn_programma\mijn_gegevensbestand.mdb c:\mijn_programma\
|
Maak een of meer mappen aan op de (netwerk)schijf waar u het programma wilt plaatsen. U kunt desgewenst het gegevensbestand in een andere map zetten dan het programmabestand. |
|
Kopieer het programmabestand en het gegevensbestand naar de gewenste mappen. |
|
Start Access, open het programmabestand met de Shift-toets ingedrukt. |
|
Stel de koppeling met het gegevensbestand goed in (zie hieronder). |
|
Controleer desgewenst of alle Verwijzingen in VBA goed staan (zie hieronder). |
|
Sluit het programma af en start het programma opnieuw op, nu zonder de Shift-knop ingedrukt. |
|
Loop alles na. |
|
Als alles goed werkt, maak dan een kopie van de bestanden en sla deze op een veilige plek op. |
|
U kunt desgewenst een MDE-bestand van het programmabestand maken. Zie hieronder. Het MDB-bestand verplaatst u dan naar een veilige plek waar alleen u als beheerder bij kunt, het MDE-bestand biedt u aan de gebruikers aan. U kunt een MDE-bestand nooit meer wijzigen maar alleen opnieuw aanmaken, dus het is belangrijk dat u het MDB-bestand goed bewaart. |
|
Maak een snelkoppeling naar het programmabestand op het Bureaublad van de pc’s waar het programma moet draaien of biedt het pictogram aan middels tools zoals Novell NAL of SMS of Citrix. |
|
Geef de toekomstige gebruikers lees- en schrijfrechten voor de map(pen) waar het programma (of het programmabestand) en het gegevensbestand staan. |
|
U kunt desgewenst voor het programmabestand de gebruikers alleen lees- en file scan rechten geven, zorg er echter wel voor dat de gebruikers in de map waar het programmabestand staat wel schrijf-, wijzig- en verwijderrechten krijgen. Access maakt in de map van het programmabestand een LDB-bestand aan zodra een gebruiker een bestand opent. Dit LDB-bestand moet gewijzigd kunnen worden. U kunt de rechten als volgt instellen: |
|
Map / bestand |
Doelgroep |
Rechten / filter |
|
map van het programmabestand |
gebruikers, programmabeheerders |
RFWMCE |
|
|
netwerkbeheerders |
RFWMCEA(S) |
|
het programmabestand (.MDB) zelf |
|
filter op WMCE, dus geen W-M-C-E rechten |
|
|
beheerders |
RFWMCE |
|
|
netwerbeheerders |
RFWMCEA(S) |
|
map van het gegevensbestand |
gebruikers, programmabeheerders |
RFWMCE |
|
|
netwerkbeheerders |
RFWMCEA(S) |
De letters staan voor: Read, File scan, Write, Modify, Create, Erase, Admin, Supervisor.
U kunt een programma instellen dat het programma direct start, zodra u het bestand in Access opent. Zie het kopje Opstarten, verderop in deze tekst. Wilt u als technisch of functioneel beheerder iets wijzigen in het programma, start dan eerst Access en open het programma in Access met de Shift-toets ingedrukt. U ziet dan het databasevenster. Zie verderop in deze tekst.
Tijdens het gebruik van het gegevensbestand wordt dit bestand steeds groter. Het is daarom aan te raden om periodiek, zeker na flinke inhoudelijke wijzigingen, het gegevensbestand en het programmabestand te comprimeren. U doet dit als volgt:
|
Het bestand mag op het moment van comprimeren niet in gebruik zijn. Sluit dus eerst alle geopende versies van het programma af. |
|
Open het gegevens- of het programmabestand met de Shift-toets ingedrukt. |
|
Start het comprimeren bij Extra >> Database hulpprogramma’s >> Database comprimeren. |
|
Na maximaal drie minuten is Access hier mee klaar. Sluit Access af en start het programma opnieuw op. |
|
Op dezelfde wijze kunt u een eventueel defect bestand repareren. |
Het is dringend aan te raden om periodiek een kopie van het gegevensbestand te maken. Bij een netwerkinstallatie wordt dit meestal dagelijks automatisch uitgevoerd, maar vraag dit wel na bij uw netwerkbeheerders. Vraag met name of een back-up ook gemaakt wordt van geopende bestanden: niet alle back-up programma’s kunnen van geopende bestanden een back-up maken.
Gegevensbestanden die gekoppeld zijn worden alleen door het programmabestand gevonden wanneer het gegevensbestand op de opgegeven plaats staat. Als u het gegevensbestand elders zet of kopieert naar een andere pc met een andere padnaam, dan wordt het gegevensbestand niet gevonden. U moet dan of de koppeling bijwerken (dit is onhandig wanneer u het programmabestand later weer wilt terugzetten op de oorspronkelijke locatie), of de volgende werkwijze uitvoeren:
Wanneer u het programma op een andere plaats wilt testen, waar de netwerkschijven niet beschikbaar zijn, dan kunt u een map op uw pc tijdelijk een schijfletter geven. U doet dit met de DOS-opdracht Subst. Voorbeeld: als het programma op het netwerk op de schijf I:\ staat en u de bestanden op uw eigen pc in de map c:\Mijn documenten\Mijn werk\ hebt staan, geeft u bij Start >> Uitvoeren het volgende commando:
subst i: "c:\Mijn documenten\Mijn werk"
Gebruik dubbele aanhalingstekens wanneer de padnaam spaties bevat.
Zet geen \ achter de padnaam.
Wilt u de schijfletter vaker gebruiken, zet dan de subst-regel in een tekstbestandje dat u opslaat met de naam mapping.bat en sla dit bestandje op in de Opstarten-map van Windows:
|
Windows 98: C:\Windows\Start Menu\Programma's\Opstarten\ |
|
Windows 2000/XP: C:\Documents and settings\<uw_profielnaam>\Start Menu\Programma's\Opstarten\ |
U kunt ook een schijfletter maken met Netwerkverbindingen, zie in Windows Verkenner: Extra > Netwerkverbinding maken.
Een andere en nette oplossing voor dit probleem is om in het Access-programma in te bouwen dat het programma eerst zoekt naar de backend database. Als deze niet gevonden wordt dan vraagt het prograam u waar de backend staat. Dit is uitgewerkt in een voorbeeldprogramma dat u kunt vinden in een Mini op het Office-forum: http://office.webforums.nl/forum/viewtopic.php?t=464. Voor het bekijken van deze Mini’s moet u u eerst gratis registreren op het Office-forum.
Binnen Access zijn enkele functies niet in Access zelf opgenomen, maar in afzonderlijke bibliotheek-bestanden in de Windows-map of elders op uw pc of netwerk. Als u zo'n functie start dan ziet u foutmeldingen wanneer deze onderdelen niet gevonden zijn. Controleer dan de verwijzigen naar deze onderdelen handmatig (zie hierna) en pas deze zo nodig aan.
Wanneer u overstapt van Access 97 naar 2000 dan past Access 2000 automatisch de verwijzigen aan. Bij Access 2002 en Access 2003 moet u vaak handmatig de verwijzingen aanpassen. Ook wanneer u vanuit Access 2000 of XP of 2003 terugschakelt naar Access 97 dan moet u de verwijzingen vaak handmatig aanpassen.
U kunt als volgt de verwijzingen controleren:
|
Open het Databasevenster van het programmabestand |
|
Klik op het tabblad Modules. |
|
Klik op Beeld >> Code. U ziet nu de code van een van de modules. |
|
Klik op Extra >> Verwijzingen (in Access 2000 of hoger: binnen het VBA werkvenster). |

Controleer eerst of alle verwijzingen bestaan. Bij een niet-bestaande, maar wel geactiveerde verwijzing, ziet u voor de naam van de verwijzing staan: ONTBREEKT: … Een ontbrekende verwijzing moet u uitzetten.
Controleer daarna of in ieder geval de volgende verwijzingen bestaan. Als een verwijzing niet bestaat, kies deze dan uit de lijst en vink de verwijzing aan:
|
Visual Basic for Applications |
|
Microsoft Access x.x Object library |
|
Microsoft DAO x.x Compatibility library. |
Zet bij voorkeur de verwijzing naar de DAO library boven die van de ADO library.
Access 2000 en hoger hebben standaard geen verwijzing voor DAO aan, maar gebruiken ADO als manier om gegevens te benaderen. Als u een programma alleen in Access 2000 of hoger gaat gebruiken en u geen conversie naar Access 97 gaat uitvoeren, dan kunt u ook alle betreffende programmacode in ADO schrijven. U hoeft dan niet de verwijzing voor Microsoft DAO aan te zetten. Omgekeerd geldt dat u geen ADO-code mag gebruiken in een Access 2000 programma, als u het programma later ook wilt terugconverteren naar Access 97. Zie voor de verschillen tussen DAO en ADO verderop in deze tekst.
Ziet u een van de essentiële verwijzingen niet in de lijst staan, dan is Access niet volledig geïnstalleerd. Installeer Acces opnieuw, nu inclusief de ontbrekende onderdelen.
Om te controleren of VBA nu volledig werkt, kunt u nu alle modules compileren en opslaan bij (Access 97) Foutopsporing >> Alle modules compileren en opslaan / (Access 2000 of hoger) Foutopsporing >> (naam_van_het_programma) compileren.
U kunt een Acces programma op diverse manieren afschermen tegen onbevoegde inzage, wijzigingen of gebruik. Zie de tekst Access beveiliging.
Bij Extra > Opties kunt u enkele instellingen instellen. O.a. kunt u op het tabblad Algemeen de afdrukmarges van de printer verkleinen naar bijv.
U kunt records in tabellen met onder andere queries selecteren, bewerken enzovoort.
U kunt ook programmacode schrijven om tabellen te raadplegen, te bewerken of aan te maken. U maakt dan gebruik van opdrachten uit de DAO of ADO bibliotheek van Access. Access 97 kent alleen de Data Access Objects (DAO) bibliotheek, Access 2000 en XP gebruiken standaard de ActiveX Data Objects (ADO) bibliotheek. In de Help van de VBA en in boeken over programmeren in VBA kunt u meer lezen over de verschillen hiertussen. ADO code is de beste keuze als u niet-Access gegevensbestanden aan een Access programmabestand wilt koppelen, DAO is de beste keuze als u een Access gegevensbestand aan een Access programmabestand wilt koppelen.
In de Visual Basic Editor (het venster waarin u programmacode schrijft) kunt u bij Extra >> Verwijzingen Microsoft ActiveX Data Object en/of Microsoft Data Access Object aanzetten. Als u beide wilt gebruiken, dan is de volgorde van belang: meestal heeft het de voorkeur om DAO boven ADO te zetten.
Wilt u een Access 2000 of 2002 programma terug converteren naar Access 97 dan moet u de eventuele ADO programmacode in Access 97 herschrijven naar DAO.
In de tekst Macro's en modules: Tabellen maken in VBA programmacode ziet u enkele voorbeelden van DAO en ADO programmacode en de verschillen in het gebruik hiervan.
U kunt een Acces database met de optie /compact, /repair of /decompile compact maken, repareren of decompileren. Decompileren heeft enige risico's. Zie de tekst op http://www.trigeminal.com/usenet/usenet004.asp?1043
Houd de volgende volgorde aan voor het gewenste resultaat:
access /decompile uwdatabase.mdb (de afmeting is nog hetzelfde maar wel schoon)
access /compact uwdatabase.mdb (nu is het gekrompen tot wel een derde van de oorspronkelijke database).
(Met dank aan Henry.)