Roger Frans
In de cursus Access 97 - gevorderden worden in eerste instantie macro's behandeld. Dit is evenwel niet het hoofddoel van de cursus. De meeste hoofdstukken behandelen de programmeeromgeving Visual Basis for Applications en de manier waarop u hiermee uw databases kan beheren.
gevorderden
In de cursus Access 97 - beginners zijn de klassieke onderwerpen m.b.t. een databasesysteem aan bod gekomen: aanmaken van tabellen, ontwerpen van query's, formulieren, rapporten en etiketten.
gevorderden
Access 97
Over het boek
Access 97
In de hoofdstukken 3, 4 en 5 legen we de basis uit van de taal Visual Basic for Applications (VBA). In de daaropvolgende hoofstukken passen we deze technieken toe in een uitgewerkt voorbeeld. We maken niet alleen formulieren en rapporten die we sturen vanuit VBA maar we maken ook een eigen menubalk en werkbalk voor de toepassing. Naast de gewone gegevenstypen zoals Integer, Long, Byte,… komen ook objecttypen zoals Database, TableDef, Control, enz… aan bod. We maken recordsets, tabellen, query's, enz. vanuit VBA. In Access is heel wat mogelijk. In de laatste hoofdstukken besteden we aandacht aan de beveiliging van een database, het werken in een netwerkomgeving en de interactie met andere programma's.
Over de auteur Roger FRANS studeerde in 1980 af als licentiaat in de wetenschappen, groep wiskunde. Na zijn studies volgde hij diverse bijscholingscursussen in de informaticawereld. Sinds 1988 doceert hij informatica in de Katholieke Hogeschool der Kempen, campus Hoger Instituut der Kempen te Geel. Roger FRANS is niet aan zijn proefstuk met dit boek. Al zijn cursussen zijn op eenzelfde principe gebaseerd. Concrete voorbeelden worden stap voor stap uitgelegd. Ook zijn na elk hoofdstuk oefeningen opgenomen waardoor de lezer zijn kennis kan toetsen en verfijnen. De lezer leert op die manier een pakket op een relatief eenvoudige manier doorgronden. Het is een werkwijze die door de meeste lezers-cursisten wordt geapprecieerd.
ISBN: 90.356.1096.2
campinia
media
Roger Frans
Frans, Roger – Access 97 - gevorderden / Roger Frans; Geel: Campinia Media vzw, 1997; 306 p; index; 29 cm; gelijmd. ISBN: 90.356.1096.2; NUGI 854; UDC 681.3.06 Wettelijk depot België: D/1997/3941/12 Campinia Media vzw Kleinhoefstraat 4 B – 2440 – GEEL (Belgium) Tel.: (+32) 014/59 09 59 Fax: (+32) 014/59 03 44 e-Mail: URL: <www.campiniamedia.be> Copyright 1999:
No part of this book may be reproduced in any form, by print, photoprint, microfilm or any other means without written permission of the publisher. Niets uit deze uitgave mag worden verveelvoudigd en/of openbaar gemaakt door middel van druk, fotokopie, print, microfilm of op welke andere wijze ook, zonder voorafgaande schriftelijke toestemming van de uitgever.
Inleiding Access 97 is een relationeel databasesysteem. Het is m.a.w. een programma om gegevens op een (relatief) gemakkelijke manier te beheren. Deze gegevens worden in tabellen bewaard. Tussen de tabellen kunnen relaties bestaan. In de cursus Access 97 - beginners zijn de klassieke onderwerpen m.b.t. een databasesysteem aan bod gekomen: aanmaken van tabellen, ontwerpen van query’s, formulieren, rapporten en etiketten. In de cursus Access 97 - gevorderden worden in eerste instantie macro's behandeld. Dit is evenwel niet het hoofddoel van de cursus. De meeste hoofdstukken behandelen de programmeeromgeving Visual Basic for Applications en de manier waarop u hiermee uw databases kan beheren. In de hoofdstukken 3, 4 en 5 leggen we de basis uit van de taal Visual Basic for Applications (VBA). In de daaropvolgende hoofdstukken passen we deze technieken toe in een uitgewerkt voorbeeld. We maken niet alleen formulieren en rapporten die we sturen vanuit VBA maar we maken ook een eigen menubalk en werkbalk voor de toepassing. Naast de gewone gegevenstypen zoals Integer, Long, Byte,... komen ook objecttypen zoals Database, TableDef, Control, enz... aan bod. Deze objecttypen komen in een 10de hoofdstuk aan bod. Het is een moeilijk hoofdstuk. Toch openen deze technieken een wereld die u beslist moet binnentreden. We maken recordsets, tabellen, query’s, enz. vanuit VBA. In Access is heel wat mogelijk. In de laatste hoofdstukken besteden we aandacht aan de beveiliging van een database, het werken in een netwerkomgeving en de interactie met andere programma's. Access 97 - gevorderden is een doe-cursus. Dit betekent dat u de cursus doorneemt terwijl u voor de computer zit. U neemt per hoofdstuk de cursustekst door. Daarna maakt u de oefeningen. Bij de cursus hoort een diskette. Op deze diskette staan de meeste voorbeelden en oefeningen die u uitwerkt in deze cursus. Op de diskette vindt u een bestand LeesMij.doc. Hierin staat uitgelegd hoe u de bestanden gebruikt. U kunt dit bestand lezen door op de naam van het bestand te dubbelklikken in Verkenner of Deze Computer of u kunt het openen in Kladblok of een tekstverwerkingspakket. Tot slot van deze inleiding dank ik éénieder die geholpen heeft bij het tot stand komen van deze cursus. Dank u wel. Ik hoop dat dit voor u een nuttige en aangename cursus is, een cursus die u inzicht geeft in het programmeren in Access. Opmerkingen die een latere uitgave kunnen verbeteren zijn welkom.
Roger Frans december 1997
Inleiding - 1
2 – Access 97 - gevorderden
Inhoudstafel INLEIDING.............................................................................................................................1 INHOUDSTAFEL ...................................................................................................................3 1 EEN TOEPASSING MAKEN ............................................................................................13 1.1 Inleiding.....................................................................................................................................................................13 1.2 Omschrijven van het doel van de toepassing.............................................................................................................13 1.2.1 Algemene omschrijving .......................................................................................................................................13 1.2.2 Concretisering .....................................................................................................................................................14 1.2.3 Vragen naar voorbeelden......................................................................................................................................14 1.3 Een data-model..........................................................................................................................................................14 1.4 Normaliseren .............................................................................................................................................................15 1.5 De eerste normaalvorm .............................................................................................................................................15 1.5.1 De eerste normaalvorm ........................................................................................................................................15 1.5.2 Inventariseer alle elementaire gegevens (stap 1.1) .................................................................................................15 1.5.3 Elementaire gegevens...........................................................................................................................................16 1.5.4 Verwijder alle procesgegevens (stap 1.2) ..............................................................................................................16 1.5.5 Een primaire sleutel kiezen (stap 1.4)....................................................................................................................16 1.5.6 Deelverzamelingen opzoeken die meermaals voorkomen (stap 1.5) .......................................................................17 1.5.7 Een nieuwe groep maken (stap 1.6) ......................................................................................................................17 1.5.8 De zich herhalende deelverzameling verwijderen (Stap 1.7) ..................................................................................18 1.5.9 De stappen 1.3 tot 1.8 zijn herhalend ....................................................................................................................18 1.5.10 Een andere keuze van de primaire sleutel ............................................................................................................18 1.6 De tweede normaalvorm............................................................................................................................................19 1.6.1 De tweede normaalvorm ......................................................................................................................................19 1.6.2 Het begrip functionele afhankelijkheid..................................................................................................................19 1.6.3 Functionele afhankelijkheden in ons voorbeeld .....................................................................................................20 1.7 De derde normaalvorm .............................................................................................................................................20 1.8 Andere normaalvormen ............................................................................................................................................21 1.9 Koppeling tussen groepen .........................................................................................................................................21 1.10 Fysische implementatie............................................................................................................................................21 1.10.1 Namen met spaties? ...........................................................................................................................................21 1.10.2 Objecten aanmaken in Access.............................................................................................................................21 1.10.3 Tabellen scheiden van de andere objecten ...........................................................................................................22 1.10.4 Werken in de directory C:\ACC97GEV ..............................................................................................................22 1.11 De tabellen ontwerpen .............................................................................................................................................22 1.11.1 De tabel tblBibliotheek.......................................................................................................................................23 1.11.2 De tabel tblTijdschrift ........................................................................................................................................23 1.11.3 De tabel tblBezitsgegeven ..................................................................................................................................24 1.12 De relaties aanbrengen ............................................................................................................................................25 1.13 De tabellen koppelen................................................................................................................................................26 1.13.1 Aanmaken toepassingsdatabase ..........................................................................................................................26 1.13.2 Koppelen tabellen ..............................................................................................................................................26 1.13.3 Een tweede werkwijze om tabellen te koppelen...................................................................................................27 1.13.4 De koppelingen vernieuwen ...............................................................................................................................27 1.14 Importeren van gegevens.........................................................................................................................................28 1.15 Naamgeving .............................................................................................................................................................30 1.16 Oefeningen...............................................................................................................................................................30
2 MACRO'S .........................................................................................................................33 2.1 Inleiding.....................................................................................................................................................................33 2.2 Een macro maken......................................................................................................................................................33 2.2.1 De actie FormulierOpenen (OpenForm)................................................................................................................34 2.2.2 De actie OpdrachtUitvoeren (RunCommand)........................................................................................................35 2.2.3 Wat doet de macro? .............................................................................................................................................35 2.3 Macro bewaren..........................................................................................................................................................36 2.3.1 De eerste keer ......................................................................................................................................................36 2.3.2 De volgende keren ...............................................................................................................................................36 2.4 Macro uitvoeren ........................................................................................................................................................37 2.5 Een tweede voorbeeld................................................................................................................................................37 2.5.1 De actie TabelOpenen (OpenTable)......................................................................................................................38
Inhoudstafel - 3
2.5.2 De actie Afdrukken (Print) ...................................................................................................................................38 2.5.3 De actie Sluiten (Close) .......................................................................................................................................38 2.5.4 De actie Echo ......................................................................................................................................................39 2.6 Afdrukken van de definitie van een macro ...............................................................................................................39 2.7 De werkbalk macro ...................................................................................................................................................40 2.7.1 De knop Macronamen..........................................................................................................................................40 2.7.2 Voorwaarden.......................................................................................................................................................41 2.7.3 Een macro uitvoeren vanuit het ontwerpscherm ....................................................................................................41 2.7.4 Een single step methode.......................................................................................................................................41 2.8 Een macro starten vanuit een formulier ...................................................................................................................42 2.8.1 Inleiding..............................................................................................................................................................42 2.8.2 Een bestaande macro koppelen aan een gebeurtenis ..............................................................................................42 2.8.3 Een nieuwe macro maken vanuit een formulier.....................................................................................................43 2.8.4 Uittesten van de macro.........................................................................................................................................44 2.9 Gebeurtenissen..........................................................................................................................................................44 2.9.1 Helpinformatie vanuit het algemene helpscherm...................................................................................................44 2.9.2 Helpinformatie vanuit een formulier.....................................................................................................................45 2.9.3 Een belangrijke opmerking (echt waar).................................................................................................................46 2.10 Groep van macro's ..................................................................................................................................................46 2.10.1 Een macrogroep.................................................................................................................................................46 2.10.2 De actie Zandloper (Hourglass) ..........................................................................................................................47 2.11 Een macro uit een macrogroep Uitvoeren...............................................................................................................47 2.11.1 Uitvoeren van een macro uit een macrogroep......................................................................................................47 2.11.2 Uittesten............................................................................................................................................................48 2.12 De macro AutoExec.................................................................................................................................................48 2.12.1 Een formulier automatisch openen......................................................................................................................48 2.12.2 Het databasevenster verbergen ...........................................................................................................................49 2.13 Opstarten.................................................................................................................................................................50 2.14 Macro's in de voorbeelddatabase Noordenwind .....................................................................................................50 2.15 Voorwaarden in een macro .....................................................................................................................................51 2.16 Nog enkele beschouwingen......................................................................................................................................53 2.17 Volgorde van gebeurtenissen die zich voordoen......................................................................................................53 2.18 Oefeningen...............................................................................................................................................................53
3 INLEIDING TOT VISUAL BASIC FOR APPLICATIONS ..................................................55 3.1 Inleiding ....................................................................................................................................................................55 3.2 Modules en procedures .............................................................................................................................................55 3.2.1 Functieprocedure .................................................................................................................................................56 3.2.2 Subprocedures .....................................................................................................................................................56 3.2.3 Property procedures .............................................................................................................................................57 3.2.4 Modules ..............................................................................................................................................................57 3.3 Een eerste voorbeeld .................................................................................................................................................58 3.3.1 Aanmaken van het scherm ...................................................................................................................................58 3.3.2 De programmacode oproepen...............................................................................................................................58 3.3.3 Option Explicit ....................................................................................................................................................59 3.3.4 Een nieuwe procedure maken...............................................................................................................................60 3.3.5 Programmacode toevoegen ..................................................................................................................................61 3.4 Compileren van de code ............................................................................................................................................62 3.5 Uittesten van de functie.............................................................................................................................................62 3.6 Het modulevenster splitsen .......................................................................................................................................63 3.7 Procedureweergave ...................................................................................................................................................64 3.8 Toetsen in het modulevenster en bij uitvoering ........................................................................................................64 3.9 Het objectenoverzicht................................................................................................................................................65 3.9.1 Algemeen............................................................................................................................................................65 3.9.2 Zoeken ................................................................................................................................................................65 3.10 Commentaar............................................................................................................................................................66 3.11 Variabelen ...............................................................................................................................................................67 3.12 Gegevenstypen in VBA............................................................................................................................................67 3.13 Declareren van variabelen.......................................................................................................................................68 3.13.1 De instructie DIM ..............................................................................................................................................68 3.13.2 Persoonlijke variabelen ......................................................................................................................................68 3.13.3 Openbare variabelen ..........................................................................................................................................69 3.13.4 Statische variabelen ...........................................................................................................................................69 3.13.5 Impliciete declaratie...........................................................................................................................................70 3.13.6 Deftype .............................................................................................................................................................70 3.13.7 Declareren is niet verplicht, tenzij ......................................................................................................................70
4 – Access 97 - gevorderden
3.14 Het statement Let ....................................................................................................................................................70 3.15 Operatoren ..............................................................................................................................................................70 3.15.1 Rekenkundige operatoren ...................................................................................................................................70 3.15.2 Operatoren voor tekenreeksen ............................................................................................................................71 3.15.3 Vergelijkingsoperatoren .....................................................................................................................................71 3.15.4 Logische operatoren...........................................................................................................................................71 3.16 Help .........................................................................................................................................................................72 3.17 Ingebouwde functies ................................................................................................................................................72 3.17.1 Left ...................................................................................................................................................................72 3.17.2 Right .................................................................................................................................................................72 3.17.3 Mid ...................................................................................................................................................................72 3.17.4 Len....................................................................................................................................................................73 3.17.5 UCase................................................................................................................................................................73 3.17.6 LCase ................................................................................................................................................................73 3.17.7 VarType ............................................................................................................................................................73 3.17.8 IsEmpty.............................................................................................................................................................74 3.17.9 IsNull ................................................................................................................................................................74 3.17.10 Conversiefuncties.............................................................................................................................................74 3.17.11 Tekenreeksen als resultaat van functies .............................................................................................................75 3.18 Het foutopsporingsvenster.......................................................................................................................................75 3.18.1 De waarde van een expressie berekenen..............................................................................................................75 3.18.2 Variabelen een waarde geven .............................................................................................................................75 3.19 Een subprocedure....................................................................................................................................................76 3.20 Afdrukken van een module .....................................................................................................................................78 3.21 Globale modules ......................................................................................................................................................79 3.22 Converteren van een macro in programmacode .....................................................................................................79 3.23 Constanten...............................................................................................................................................................80 3.23.1 Symbolische constanten .....................................................................................................................................81 3.23.2 Ingebouwde constanten ......................................................................................................................................81 3.24 Bereik van variabelen en constanten.......................................................................................................................82 3.25 Oefeningen...............................................................................................................................................................83
4 CONTROLESTRUCTUREN .............................................................................................85 4.1 Inleiding.....................................................................................................................................................................85 4.2 De selectie ..................................................................................................................................................................85 4.3 Het statement MsgBox en de functie MsgBox().........................................................................................................86 4.3.1 Syntax .................................................................................................................................................................86 4.3.2 Andere notatie .....................................................................................................................................................88 4.4 Verwijzen naar objecten en eigenschappen...............................................................................................................89 4.5 Het If-statement.........................................................................................................................................................89 4.5.1 Syntax .................................................................................................................................................................89 4.5.2 Voorbeeld 1.........................................................................................................................................................90 4.5.3 Voorbeeld 2.........................................................................................................................................................91 4.6 De methode Print.......................................................................................................................................................91 4.6.1 Syntax .................................................................................................................................................................91 4.6.2 Voorbeelden ........................................................................................................................................................92 4.7 De meervoudige selectie.............................................................................................................................................92 4.8 Het Select Case-statement .........................................................................................................................................93 4.8.1 Syntax .................................................................................................................................................................93 4.8.2 Nog een voorbeeld...............................................................................................................................................94 4.9 De functie InputBox ..................................................................................................................................................94 4.9.1 Syntax .................................................................................................................................................................94 4.9.2 Twips ..................................................................................................................................................................94 4.10 De zelftellende lus ....................................................................................................................................................95 4.10.1 Het voorbeeld ....................................................................................................................................................95 4.10.2 Carriage return en Line feed ...............................................................................................................................95 4.10.3 Opbouwen van de tekst ......................................................................................................................................96 4.11 For ... Next ...............................................................................................................................................................96 4.12 De (gewone) iteratie.................................................................................................................................................97 4.13 Do While ... Loop en andere lussen..........................................................................................................................98 4.14 Enkele datumfuncties ..............................................................................................................................................98 4.14.1 De functie Weekday() ........................................................................................................................................98 4.14.2 De functie CDate ()............................................................................................................................................99 4.14.3 De functie IsDate().............................................................................................................................................99 4.15 De functie Format..................................................................................................................................................100 4.15.1 Weergave van getallen .....................................................................................................................................100
Inhoudstafel - 5
4.15.2 Weergave van tijd en datum .............................................................................................................................102 4.15.3 Opletten met datums in programmacode ...........................................................................................................104 4.15.4 Strings.............................................................................................................................................................104 4.16 Eéndimensionale matrices.....................................................................................................................................105 4.16.1 Probleemstelling ..............................................................................................................................................105 4.16.2 Uittesten..........................................................................................................................................................105 4.16.3 Declaratie van een matrix.................................................................................................................................106 4.16.4 Uitbreiding syntax statements Public, Private, Dim en Static .............................................................................107 4.16.5 Eéndimensionaal?............................................................................................................................................107 4.17 Tweedimensionale matrices...................................................................................................................................107 4.17.1 Voorbeeld........................................................................................................................................................107 4.17.2 Uitbreiding syntax statements Public, Private, Dim en Static .............................................................................108 4.17.3 Meerdimensionaal?..........................................................................................................................................108 4.18 Dynamische matrices.............................................................................................................................................108 4.19 Oefeningen.............................................................................................................................................................109
5 MEER OVER PROCEDURES EN DEBUGGEN .............................................................111 5.1 Inleiding ..................................................................................................................................................................111 5.2 Modules en procedures ...........................................................................................................................................111 5.2.1 Modules ............................................................................................................................................................111 5.2.2 Procedures.........................................................................................................................................................111 5.3 Subprocedures.........................................................................................................................................................111 5.3.1 Syntax van een subprocedure .............................................................................................................................111 5.4 Functieprocedures...................................................................................................................................................113 5.5 Benoemde argumenten............................................................................................................................................113 5.6 ByVal of ByRef........................................................................................................................................................114 5.7 Optionele parameters..............................................................................................................................................115 5.8 Een array van parameters.......................................................................................................................................116 5.9 De functie IsMissing ................................................................................................................................................117 5.10 Het statement For / Each.......................................................................................................................................117 5.11 Faculteit berekenen ...............................................................................................................................................118 5.11.1 Faculteit berekenen..........................................................................................................................................118 5.11.2 Formulier aanmaken ........................................................................................................................................118 5.11.3 Programmacode ...............................................................................................................................................119 5.12 On Error Goto.......................................................................................................................................................120 5.12.1 Het statement On Error Goto............................................................................................................................120 5.12.2 De foutafhandelingsroutine ..............................................................................................................................121 5.12.3 Het statement Resume......................................................................................................................................121 5.12.4 Het object Err ..................................................................................................................................................122 5.13 Recursie.................................................................................................................................................................122 5.14 Een bug?................................................................................................................................................................123 5.15 Een onderbrekingspunt, Stap en Stap over...........................................................................................................125 5.15.1 Een onderbrekingspunt.....................................................................................................................................125 5.15.2 De waarde van een variabele ............................................................................................................................125 5.15.3 Het venster Foutopsporing ...............................................................................................................................126 5.15.4 Stap en Stap over .............................................................................................................................................126 5.15.5 Doorgaan.........................................................................................................................................................127 5.15.6 Verwijderen van een breakpoint .......................................................................................................................127 5.15.7 Stop.................................................................................................................................................................127 5.16 Een controle (watch)..............................................................................................................................................127 5.16.1 Een controle toevoegen ....................................................................................................................................127 5.16.2 Een controle bewerken.....................................................................................................................................128 5.17 Snelcontrole...........................................................................................................................................................128 5.18 Opgeroepen procedures ........................................................................................................................................129 5.19 Oefeningen.............................................................................................................................................................129
6 TOEPASSINGEN IN FORMULIEREN ............................................................................133 6.1 Inleiding ..................................................................................................................................................................133 6.2 Omschrijving en doel van de toepassing .................................................................................................................133 6.2.1 Algemene omschrijving .....................................................................................................................................133 6.2.2 Concretisering ...................................................................................................................................................133 6.2.3 Vragen naar voorbeelden ...................................................................................................................................134 6.3 Normaliseren...........................................................................................................................................................134 6.3.1 Inventariseer alle elementaire gegevens (stap 1.1)...............................................................................................134 6.3.2 Verwijder alle procesgegevens (stap 1.2)............................................................................................................135 6.3.3 Een primaire sleutel kiezen (stap 1.4) .................................................................................................................136 6.3.4 Deelverzamelingen opzoeken die een aantal keren voorkomen (stap 1.5).............................................................136
6 – Access 97 - gevorderden
6.4 De tweede normaalvorm..........................................................................................................................................136 6.5 De derde normaalvorm ...........................................................................................................................................137 6.5.1 Functionele afhankelijkheid van Dienstnr ...........................................................................................................137 6.5.2 Functionele afhankelijkheid van Artikelnr...........................................................................................................137 6.5.3 Functionele afhankelijkheid van Groepsnr ..........................................................................................................138 6.6 Koppeling tussen groepen .......................................................................................................................................138 6.7 De tabellen ontwerpen.............................................................................................................................................139 6.7.1 De tabel tblGroep...............................................................................................................................................139 6.7.2 De tabel tblArtikel .............................................................................................................................................139 6.7.3 De tabel tblDienst ..............................................................................................................................................140 6.7.4 De tabel tblMutatie ............................................................................................................................................140 6.8 De relaties aanbrengen ............................................................................................................................................141 6.9 De tabellen koppelen ...............................................................................................................................................141 6.10 Het formulier frmGroep........................................................................................................................................141 6.10.1 Aanmaken van het formulier m.b.v. een wizard.................................................................................................141 6.10.2 Toevoegen van records.....................................................................................................................................142 6.11 Het object DoCmd .................................................................................................................................................142 6.11.1 De knop Sluiten toevoegen m.b.v. een wizard ...................................................................................................142 6.11.2 De code bij de gebeurtenis Klikken...................................................................................................................143 6.11.3 Syntax van DoCmd ..........................................................................................................................................143 6.11.4 Syntax DoCmd.Close.......................................................................................................................................144 6.11.5 Een sneltoets....................................................................................................................................................144 6.12 Het formulier frmArtikel ......................................................................................................................................145 6.12.1 Aanmaken van het formulier met een wizard.....................................................................................................145 6.12.2 Een keuzelijst met invoervak toevoegen met een wizard....................................................................................145 6.12.3 Aanpassen eigenschappen keuzelijst .................................................................................................................146 6.12.4 Toevoegen opdrachtknoppen ............................................................................................................................147 6.13 De methode OpenQuery (QueryOpenen)..............................................................................................................148 6.13.1 Wat willen we? ................................................................................................................................................148 6.13.2 Query aanmaken ..............................................................................................................................................148 6.13.3 DoCmd.OpenQuery .........................................................................................................................................148 6.13.4 De syntax van DoCmd OpenQuery...................................................................................................................149 6.13.5 Meer informatie?..............................................................................................................................................149 6.13.6 Uittesten ..........................................................................................................................................................150 6.14 De methode Requery .............................................................................................................................................150 6.14.1 Het probleem ...................................................................................................................................................150 6.14.2 De methode Requery (van het object DoCmd)...................................................................................................150 6.14.3 Syntaxnotatie ...................................................................................................................................................151 6.15 De methode OpenForm (FormulierOpenen).........................................................................................................151 6.15.1 Probleemstelling ..............................................................................................................................................151 6.15.2 De programmacode ..........................................................................................................................................151 6.15.3 Syntax van DoCmd.OpenForm.........................................................................................................................152 6.16 De methode Requery (VBA)..................................................................................................................................153 6.17 Een element toevoegen in een keuzelijst ................................................................................................................153 6.17.1 De eigenschap Alleen lijst.................................................................................................................................153 6.17.2 De eigenschap Bij niet in lijst ...........................................................................................................................153 6.17.3 De eigenschap Bij dubbelklikken.......................................................................................................................154 6.17.4 De eigenschap Bij activeren .............................................................................................................................154 6.18 SendKeys ...............................................................................................................................................................155 6.19 Gebeurtenissen bij formulieren.............................................................................................................................156 6.19.1 Activeren en uitschakelen van formulieren........................................................................................................156 6.19.2 Openen en sluiten van formulieren....................................................................................................................156 6.19.3 Verplaatsen van formulieren en formaat wijzigen.............................................................................................156 6.19.4 Scrollen ...........................................................................................................................................................157 6.20 Volgorde van de gebeurtenissen ............................................................................................................................157 6.20.1 Openen (Open) ................................................................................................................................................157 6.20.2 Laden (Load) ...................................................................................................................................................157 6.20.3 FormaatWijzigen (Resize)................................................................................................................................157 6.20.4 Activeren (Activate).........................................................................................................................................157 6.20.5 Aanwijzen (Current).........................................................................................................................................157 6.20.6 UitGeheugen (Unload) .....................................................................................................................................157 6.20.7 Uitschakelen (Deactivate).................................................................................................................................158 6.20.8 Sluiten (Close) .................................................................................................................................................158 6.21 Collecties................................................................................................................................................................158 6.21.1 Wat is het?.......................................................................................................................................................158 6.21.2 Een voorbeeld..................................................................................................................................................158
Inhoudstafel - 7
6.21.3 De eigenschap Count .......................................................................................................................................159 6.22 Oefeningen.............................................................................................................................................................159
7 EEN MEER COMPLEX FORMULIER .............................................................................161 7.1 Inleiding ..................................................................................................................................................................161 7.2 De query qryMutatie...............................................................................................................................................162 7.3 Het formulier frmMutatie.......................................................................................................................................163 7.3.1 Formulier aanmaken ..........................................................................................................................................163 7.3.2 De keuzelijst lstGroep........................................................................................................................................163 7.3.3 De keuzelijst lstArtikel.......................................................................................................................................164 7.3.4 Het groepsvak fraAard.......................................................................................................................................165 7.3.5 De keuzelijst met invoervak cboDienst ...............................................................................................................166 7.3.6 Het tekstvak txtTotaal........................................................................................................................................166 7.3.7 Bijschrift van het formulier ................................................................................................................................167 7.3.8 Voorlopig resultaat ............................................................................................................................................167 7.4 Het formulier laten werken.....................................................................................................................................167 7.4.1 Het declaratiegedeelte........................................................................................................................................167 7.4.2 De gebeurtenis Aanwijzen (Current)...................................................................................................................167 7.4.3 De gebeurtenis NaBijwerken (AfterUpdate) bij lstGroep.....................................................................................169 7.4.4 De gebeurtenis NaBijwerken (AfterUpdate) bij lstArtikel....................................................................................169 7.4.5 De gebeurtenis NaBijwerken bij fraAard ............................................................................................................170 7.4.6 De tabvolgorde ..................................................................................................................................................171 7.4.7 Standaardwaarde voor de datum.........................................................................................................................171 7.4.8 Uittesten............................................................................................................................................................171 7.5 Verder verfijnen van het formulier.........................................................................................................................172 7.5.1 De gebeurtenis VoorBijwerken (BeforeUpdate)..................................................................................................172 7.5.2 Knoppen Bewaar en Sluiten ...............................................................................................................................173 7.5.3 De knop Sluiten .................................................................................................................................................174 7.5.4 De programmacode in ControleerOfAllesIsIngegeven verfijnen ..........................................................................174 7.6 De methode RunCommand .....................................................................................................................................175 7.7 Knopinfo (ControlTipText).....................................................................................................................................175 7.8 Nog even de functie IsNull.......................................................................................................................................175 7.9 Verdere uitbreiding.................................................................................................................................................176 7.10 De database starten vanuit het formulier Mutatie ................................................................................................177 7.11 Gebeurtenissen bij besturingselementen...............................................................................................................178 7.12 Oefeningen.............................................................................................................................................................179
8 RAPPORTEN .................................................................................................................181 8.1 Inleiding ..................................................................................................................................................................181 8.2 Aanmaken scherm...................................................................................................................................................182 8.3 Programmacode ......................................................................................................................................................183 8.3.1 Bij het openen van het formulier ........................................................................................................................183 8.3.2 De methode SetFocus ........................................................................................................................................184 8.3.3 Na Bijwerken van fraAfdrukken.........................................................................................................................184 8.3.4 Na Bijwerken van fraPerGroep en fraPerDienst ..................................................................................................185 8.3.5 Klikken op cmdAfdrukken.................................................................................................................................185 8.3.6 Klikken op de knop Sluiten ................................................................................................................................187 8.4 De methode OpenReport (Rapport openen) ...........................................................................................................187 8.5 Gebeurtenissen bij rapporten .................................................................................................................................187 8.5.1 Openen (Open) ..................................................................................................................................................187 8.5.2 Sluiten (Close)...................................................................................................................................................187 8.5.3 GeenGegevens (NoData)....................................................................................................................................187 8.5.4 Pagina (Page) ....................................................................................................................................................188 8.6 Het rapport .............................................................................................................................................................188 8.6.1 Aanmaken van het rapport .................................................................................................................................188 8.6.2 Het veld Toelichting ..........................................................................................................................................189 8.6.3 Het afdrukvoorbeeld tonen in een maximumvenster............................................................................................190 8.7 Indien er geen gegevens zijn … ...............................................................................................................................190 8.8 De methode PrintOut (Afdrukken) .........................................................................................................................191 8.9 Oefeningen ..............................................................................................................................................................192
9 EEN EIGEN MENUSTRUCTUUR EN WERKBALK........................................................193 9.1 Inleiding ..................................................................................................................................................................193 9.2 Menubalk maken ....................................................................................................................................................193 9.2.1 Per venster of globaal.........................................................................................................................................193 9.2.2 Een menubalk maken.........................................................................................................................................193 9.3 Menukeuzen toevoegen aan een menu ....................................................................................................................194
8 – Access 97 - gevorderden
9.3.1 Nieuwe menukeuze............................................................................................................................................194 9.3.2 Een formulier openen.........................................................................................................................................196 9.3.3 Een menu-item uit een bestaand menu selecteren ................................................................................................196 9.3.4 Groep ................................................................................................................................................................196 9.3.5 Een functieprocedure .........................................................................................................................................197 9.4 Globale menubalk ...................................................................................................................................................197 9.5 De menubalk koppelen aan een formulier...............................................................................................................198 9.6 De collectie CommandBars .....................................................................................................................................198 9.7 Meer mogelijkheden m.b.t. menukeuzen.................................................................................................................199 9.7.1 Een menukeuze inschakelen en uitschakelen.......................................................................................................200 9.7.2 Verbergen en zichtbaar maken van menukeuzen .................................................................................................200 9.8 Werkbalken.............................................................................................................................................................200 9.9 Een ingebouwde werkbalk aanpassen .....................................................................................................................200 9.9.1 Een knop toevoegen aan een werkbalk................................................................................................................200 9.9.2 Een knop verwijderen ........................................................................................................................................200 9.9.3 Een knop verplaatsen .........................................................................................................................................201 9.9.4 Herstellen van de beginwaarden van een werkbalk..............................................................................................201 9.10 Een aangepaste werkbalk maken ..........................................................................................................................201 9.10.1 Een aangepaste werkbalk maken.......................................................................................................................201 9.10.2 Groepen...........................................................................................................................................................202 9.10.3 De aangepaste werkbalk in gebruik nemen........................................................................................................202 9.10.4 De naam wijzigen van een aangepaste werkbalk................................................................................................202 9.10.5 Een aangepaste werkbalk verwijderen...............................................................................................................203 9.11 Een werkbalk gebruiken in een toepassing ...........................................................................................................203 9.12 Zelf knoppen maken..............................................................................................................................................203 9.12.1 Een functieprocedure aanmaken .......................................................................................................................203 9.12.2 De knop toevoegen ..........................................................................................................................................203 9.12.3 Uittesten ..........................................................................................................................................................204 9.13 Het uiterlijk van een knop wijzigen.......................................................................................................................204 9.13.1 Een zelfgemaakte knop wijzigen.......................................................................................................................204 9.14 Sneltoetsen en AutoKeys .......................................................................................................................................205 9.15 Oefeningen.............................................................................................................................................................206
10 OBJECTTYPEN............................................................................................................207 10.1 Inleiding.................................................................................................................................................................207 10.2 Eerst een voorbeeld ...............................................................................................................................................207 10.2.1 Probleemstelling en vertrekpunt........................................................................................................................207 10.2.2 Openen van het formulier .................................................................................................................................208 10.2.3 Na het bijwerken van de lijst ............................................................................................................................209 10.3 Jet Database Engine ..............................................................................................................................................210 10.3.1 Microsoft Jet Database Engine..........................................................................................................................210 10.3.2 Objecten en collecties.......................................................................................................................................210 10.3.3 Object-hiërarchie (DAO)..................................................................................................................................210 10.3.4 Objecten van Access en objecten van DBEngine...............................................................................................211 10.3.5 Microsoft Access-objecten ...............................................................................................................................211 10.4 Het object DBEngine .............................................................................................................................................212 10.4.1 Een collectie ....................................................................................................................................................212 10.4.2 Eigenschappen van DBEngine..........................................................................................................................212 10.4.3 De methode CompactDatabase .........................................................................................................................212 10.5 De collectie Workspaces ........................................................................................................................................213 10.5.1 De collectie Workspaces ..................................................................................................................................213 10.6 Objecten - objectvariabelen...................................................................................................................................213 10.6.1 Verwijzen naar een object - notaties..................................................................................................................213 10.6.2 Een objectvariabele declareren .........................................................................................................................214 10.6.3 Een objectvariabele een waarde toekennen........................................................................................................214 10.7 Objectvariabelen van de typen Workspace en Database.......................................................................................215 10.7.1 Schematische voorstelling ................................................................................................................................215 10.7.2 Definiëren van een objectvariabele van het type Workspace en Database ...........................................................215 10.7.3 Een voorbeeld..................................................................................................................................................215 10.7.4 Opmerking.......................................................................................................................................................216 10.8 Objectvariabelen van het type Recordset..............................................................................................................216 10.8.1 Situering..........................................................................................................................................................216 10.8.2 Typen van recordset-objecten ...........................................................................................................................217 10.8.3 Voorbeeld........................................................................................................................................................217 10.9 Een variabele van het type Recordset maken........................................................................................................218 10.9.1 Een variabele van het type Recordset................................................................................................................218
Inhoudstafel - 9
10.9.2 Methoden bij recordsets ...................................................................................................................................219 10.9.3 Eigenschappen bij recordsets............................................................................................................................220 10.10 Records toevoegen ...............................................................................................................................................221 10.10.1 Het inleidend voorbeeld .................................................................................................................................221 10.10.2 Records wijzigen ...........................................................................................................................................227 10.10.3 Records verwijderen ......................................................................................................................................227 10.10.4 Een nieuwe record toevoegen .........................................................................................................................227 10.10.5 Opmerking ....................................................................................................................................................227 10.11 Een recordset maken op basis van een query......................................................................................................227 10.11.1 Oplossing door de naam van de query op te geven ..........................................................................................228 10.11.2 Oplossing door het SQL-statement te geven....................................................................................................228 10.12 Een recordset maken op basis van een formulier................................................................................................229 10.13 Een recordset ordenen m.b.v. de eigenschap Index.............................................................................................229 10.14 De methode OpenDatabase .................................................................................................................................231 10.15 Een recordset sorteren door een nieuwe recordset te openen .............................................................................231 10.15.1 De eigenschap Sort ........................................................................................................................................231 10.15.2 Sorteerexpressies ...........................................................................................................................................232 10.15.3 Opmerking ....................................................................................................................................................233 10.16 Een recordset filteren ..........................................................................................................................................233 10.17 Records zoeken ....................................................................................................................................................233 10.17.1 De Find-methoden .........................................................................................................................................233 10.17.2 De methode Seek ...........................................................................................................................................234 10.18 Bookmarks ..........................................................................................................................................................235 10.18.1 Bladwijzers (Bookmarks)...............................................................................................................................235 10.18.2 AbsolutePosition e.a.......................................................................................................................................237 10.19 Een nieuwe query maken vanuit VBA ................................................................................................................237 10.19.1 Voorbeeld......................................................................................................................................................237 10.19.2 De methode CreateQueryDef..........................................................................................................................238 10.20 Parameterquery’s gebruiken...............................................................................................................................238 10.20.1 Aanmaken van de parameterquery ..................................................................................................................238 10.20.2 Aanmaken van het formulier ..........................................................................................................................239 10.21 Uitvoeren van een actiequery ..............................................................................................................................240 10.21.1 De methode OpenQuery van het object DoCmd ..............................................................................................240 10.21.2 De methode Execute op het query-object ........................................................................................................241 10.22 Een tabel maken vanuit VBA ..............................................................................................................................242 10.22.1 Voorbeeld......................................................................................................................................................242 10.22.2 De methode CreateTableDef ..........................................................................................................................243 10.22.3 Field (object) en Fields (collectie)...................................................................................................................243 10.23 Het type van een besturingselement bepalen.......................................................................................................243 10.23.1 Voorbeeld......................................................................................................................................................243 10.23.2 TypeOf..........................................................................................................................................................245 10.23.3 Meerdere eigenschappen instellen met With....................................................................................................245 10.24 Standaardcollecties..............................................................................................................................................245 10.25 Eigenschappen gebruiken die staan voor objecten..............................................................................................246 10.26 Oefeningen...........................................................................................................................................................247
11 UITGEWERKTE VOORBEELDEN ...............................................................................251 11.1 Inleiding ................................................................................................................................................................251 11.2 Een zoekscherm.....................................................................................................................................................251 11.3 Ontwikkelen van frmZoekscherm.........................................................................................................................253 11.3.1 Ontwikkelen van het scherm frmZoekscherm....................................................................................................253 11.3.2 Programmacode declaratie en sluiten................................................................................................................254 11.3.3 Standaardwaarde instellen voor keuzevak .........................................................................................................254 11.3.4 Programmacode indien een andere keuze gemaakt wordt ..................................................................................254 11.3.5 Programmacode achter de knop Zoeken............................................................................................................255 11.3.6 Zoeken over alle velden heen ...........................................................................................................................257 11.4 Ontwikkelen van frmItemsDieVoldoen.................................................................................................................257 11.5 Antwoorden.mdb...................................................................................................................................................258 11.6 Orders.mdb ...........................................................................................................................................................263 11.6.1 Algemeen ........................................................................................................................................................263 11.6.2 Gebeurtenissen weergeven ...............................................................................................................................263 11.7 Noordenwind.mdb.................................................................................................................................................264 11.8 Oefeningen.............................................................................................................................................................265
12 BEVEILIGING ...............................................................................................................267 12.1 Inleiding ................................................................................................................................................................267 12.2 Een werkgroep ......................................................................................................................................................267
10 – Access 97 - gevorderden
12.3 Standaard werkgroep............................................................................................................................................267 12.4 Een nieuwe werkgroep maken...............................................................................................................................267 12.5 Groeps- en gebruikersaccounts .............................................................................................................................269 12.5.1 Standaard groeps- en gebruikersaccounts ..........................................................................................................269 12.5.2 Beheerders- en eigenaarsaccounts.....................................................................................................................270 12.6 Een gebruikersaccount om de database te beheren...............................................................................................271 12.7 Aanmeldingsprocedure..........................................................................................................................................272 12.8 Een wachtwoord voor BeheerderVerknw .............................................................................................................273 12.9 De Wizard Beveiliging op gebruikersniveau .........................................................................................................274 12.10 Groeps- en gebruikersaccounts aanmaken..........................................................................................................275 12.10.1 Creëren van de verschillende groepen .............................................................................................................275 12.10.2 Gebruikersaccounts aanmaken........................................................................................................................275 12.10.3 Toegangsrechten toewijzen.............................................................................................................................276 12.10.4 Toegangsrechten voor het openen van de database ..........................................................................................277 12.10.5 Ook voor de groep Boekhouding ....................................................................................................................277 12.10.6 Beheerder uit Beheerders verwijderen.............................................................................................................277 12.10.7 Uittesten ........................................................................................................................................................277 12.11 Wachtwoorden.....................................................................................................................................................278 12.12 Beveiligingsinformatie afdrukken .......................................................................................................................278 12.13 Een query met de toegangsrechten van de eigenaar............................................................................................278 12.14 Oorspronkelijke werkgroep terug instellen.........................................................................................................280 12.15 Verschillende werkgroepen .................................................................................................................................280 12.15.1 Access starten met een bepaalde werkgroep ....................................................................................................280 12.15.2 Een kopie maken van de snelkoppeling...........................................................................................................280 12.15.3 De eigenschappen van de kopie aanpassen ......................................................................................................281 12.16 Startopties van Access .........................................................................................................................................282 12.17 Wachtwoord op een database..............................................................................................................................282 12.17.1 Wachtwoord op een database instellen ............................................................................................................282 12.17.2 Wachtwoord verwijderen................................................................................................................................283 12.18 VBA .....................................................................................................................................................................283 12.19 Een MDE-bestand maken....................................................................................................................................283 12.20 Oefeningen...........................................................................................................................................................283
13 EEN TOEPASSING VOOR EEN NETWERKOMGEVING ............................................285 13.1 Inleiding.................................................................................................................................................................285 13.2 Opties in de interface van Access ..........................................................................................................................285 13.2.1 Plaats van de bestanden....................................................................................................................................285 13.2.2 Splitsen van een database .................................................................................................................................285 13.2.3 Exclusieve toegang ..........................................................................................................................................285 13.2.4 Standaardmodus voor openen ...........................................................................................................................286 13.2.5 De eigenschap Recordvergrendeling .................................................................................................................287 13.3 Records vergrendelen............................................................................................................................................287 13.3.1 Vergrendeling..................................................................................................................................................287 13.3.2 Een onafhankelijk formulier maken ..................................................................................................................287 13.4 Volledige recordvergrendeling ..............................................................................................................................288 13.4.1 Wat?................................................................................................................................................................288 13.4.2 Programmacode ...............................................................................................................................................288 13.4.3 Foutmeldingen.................................................................................................................................................289 13.5 Beperkte vergrendeling .........................................................................................................................................290 13.5.1 Programmacode ...............................................................................................................................................290 13.5.2 Foutmeldingen.................................................................................................................................................291 13.5.3 Voordeel..........................................................................................................................................................291 13.6 De meest voorkomende fouten...............................................................................................................................291 13.7 Oefeningen.............................................................................................................................................................292
14 INTERACTIE MET ANDERE TOEPASSINGEN ...........................................................293 14.1 Inleiding.................................................................................................................................................................293 14.2 Standaardbrieven maken in Word........................................................................................................................293 14.3 Een andere toepassing starten ...............................................................................................................................294 14.4 De opdracht Shell ..................................................................................................................................................295 14.5 Oefeningen.............................................................................................................................................................295
APPENDIX A AFSPRAKEN M.B.T. NAAMGEVING ........................................................297 BIJLAGEN.........................................................................................................................301 TREFWOORDENREGISTER ............................................................................................303
Inhoudstafel - 11