[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
Normaliseren van tabellen Praktische oefeningen Oefening 2 : Het gebruik van een OPZOEKTABEL
Maak eerst een backup van de werkende versie In onze eigen database moeten we het principe van een ‘opzoektabel’ gebruiken bij het invullen en het bewaren van het postnummer en gemeente van de persoon die we toevoegen aan de tblPersonen. Maar voor we belangrijke aanpassingen aanbrengen aan onze toepassing gaan we eerst een backup nemen. Klik op de
Access maakt nu een kopie van de database in dezelfde map waarin de originele database staat maar voegt in de naam de datum toe en eventueel een volgnummer wanneer je meerdere backups neemt op één dag.
Klik in het volgende venster gewoon op .
1
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
In de map waar de database staat zie je nu het volgende :
- het eerste bestand is de toepassing waarin we werken - het tweede bestand is een tijdelijk bestand dat Access aanmaakt als je met de database werkt. Dit bestand wordt automatisch verwijderd wanneer je de database sluit. - het derde bestand is de backup van het eerste bestand. Je ziet dat de datum gewoon is toegevoegd aan de naam van de database. Maak ik dezelfde dag nog een backup wordt deze toegevoegd met dezelfde naam als de vorige backup maar met een toevoeging van een volgnummer – in ons voorbeeld : _(1).
2
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
Nu kunnen we zonder problemen starten met de aanpassingen. Loopt het fout kunnen we gewoon terug keren naar de vorige versie want daarvoor hebben we de backup van deze ‘werkende versie’ gemaakt.
Invullen en opzoeken van het postnummer en de gemeente De bedoeling is dat de gebruiker het postnummer invult van de persoon die hij wenst toe te voegen. Het systeem moet dan zelf alle gemeentes op zoeken met dat postnummer. De gebruiker moet dan de juiste gemeente kiezen. Is er slechts één mogelijke gemeente, bvb. 9900 is Eeklo en er is geen enkele andere gemeente met hetzelfde postnummer, dan moet het systeem onmiddellijk de juiste gemeente voorstellen. We openen het formulier ‘frmInvoerenPersonen’ in ontwerpweergave door er rechts op te klikken en de juiste keuze te maken.
3
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009 Op dit formulier is al een tekstvak ‘txtPostnummer’ voorzien. In dit tekstvak kunnen we het postnummer invullen. Daarna moet Access de gemeente opzoeken. Daarvoor voegen we straks een ‘keuzelijst met invoervak’ toe aan het formulier met de lijst van overeenkomende gemeentes. Voor we verder gaan wil ik voor alle duidelijkheid eerst de veldnamen in de tabel tblPostcodes aanpassen en wel als volgt :
ID Code Name Upname Structcode
wordt wordt wordt wordt wordt
PST_GemeenteNummer PST_Postnummer PST_Gemeentenaam PST_GemeentenaamHoofdletters PST_Structuurcode
Unieke code van de gemeente Postnummer Gemeentenaam in kleine letters Gemeentenaam in hoofdletters Postnummer en Gemeentenaam
A. Selectiequery maken Maar eerst moeten we een selectiequery maken die als resultaat een lijst geeft met alle gemeentes die het ingevulde postnummer hebben. - Klik op [Maken] in het lint, in de groep klik je op (uiterst rechts) - Voeg de tabel ‘tblPostcodes’ toe en druk op <Sluiten>.
4
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
Met dit als resultaat.
In onze lijst willen wij de gemeentes zien, maar zoeken we op postnummer en om de gemeente later te kunnen bewaren moeten we zeker de primaire sleutel van de tabel mee opnemen in de query. Dat betekent dat volgende velden in het queryraster moeten opgenomen worden : PST_GemeenteNummer (= primaire sleutel), PST_Postnummer en PST_Gemeentenaam. Dit doen we door op elk veld 2x te klikken.
5
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
We moeten nu het postnummer mee geven in de query. Wanneer de gebruiker het postnummer 9000 in vult moet de query als resultaat de gemeente ‘Gent’ geven. Het postnummer moet ingegeven worden in de cel ‘Criteria’ onder het veld Code (=postnummer). Het postnummer staat echter ingevuld op het formulier – dus moeten we het daar halen. Klik met de rechtermuis in de cel ‘Criteria’ onder het veld ‘Code’ en kies daar voor
Een nieuwe venster ‘Opbouwfunctie voor expressies’ opent zich :
We gaan nu op zoek naar het veld ‘txtPostnummer’ op het formulier ‘frmInvoerenPersonen’. Vergroot het scherm ‘Opbouwfunctie voor expressies’ door onderaan rechts van het venster de hoek naar beneden en gelijktijdig naar rechts te slepen. Klik 2x op plusje voor ‘Forms’ Klik 2x op plusje voor ‘Alle formulieren’ 6
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009 Klik 1x op het formulier ‘frmInvoerenPersonen’ In het middelste venster zie je nu alle objecten die zich op het formulier bevinden.
Dubbelklik op txtPostnummer en boven wordt door de wizard de expressie gemaakt. Druk daar na op en je komt terug terecht in het queryraster. De bovenstaande expressie betekent : op het formulier ‘frmInvoerenPersoon’ de waarde die staat in het object ‘txtPostnummer’. Dat is bijvoorbeeld het postnummer 9000. In het queryraster vind je dan deze expressie. Verbreed de kolom van ‘Code’ even en dan zie je de expressie volledig.
We bewaren deze query als ‘qryOpzoekenGemeente’ door op het disketje bovenaan links te klikken (maar dat zou nu al evident mogen lijken zijn). Willen we nu de query even testen dan drukken we op rode uitroepteken . We krijgen een blanco resultaat omdat er nog geen postnummer is ingevuld op het formulier.
7
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
Klik rechts op het tabblad met ‘qryOpzoekenGemeente’ en kies voor . Klik daarna op het tabblad ‘frmInvoerenPersonen’ en kies daar voor . Vul nu het postnummer ‘9000’ in het tekstvak ‘txtPostnummer’ en druk op <Enter> om het veld te verlaten (dan pas is de waarde geregistreerd voor Access).
8
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009 Klik nu terug op het tabblad ‘qryOpzoekenGemeente’ en druk het tabblad *Ontwerpen+ en daarna op op het lint. Dit is het resultaat – de query is juist gemaakt.
B. Keuzelijst met invoervak maken Ga terug naar het formulier ‘frmInvoerenPersonen’ en open dit in ‘Ontwerpweergave’. Op het lint in de tab *Ontwerpen+ klikken we in de groep op ‘Keuzelijst met invoervak’.
Daarna klikken we op het formulier naast het tekstvak ‘txtPostnummer’. Er opent zich een Wizard.
9
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
De waarden die in de keuzelijst zullen verschijnen worden geleverd door de query die we net gemaakt hebben, nl. qryOproepenGemeente. Vandaar dat we in deze wizard kiezen voor de eerste keuze ‘De waarden voor de keuzelijst met invoervak moeten worden opgezocht in een tabel of query’ en klik op .
Kies in het volgende venster voor ‘Query’s’ en selecteer daar ‘qryOpzoekenGemeente’. Klik op . In het volgende venster staan alle velden die je in de query hebt opnomen. Voor de lijst die we maken hebben we eigenlijk enkel de ‘PST_GemeenteNummer’ (unieke sleutel) en de ‘PST_GemeenteNaam’ (Gemeentenaam) nodig. Het veld ‘PST_Postnummer’ moet niet opgenomen worden omdat dit in principe dezelfde waarde is die je ingevuld hebt op het formulier, en dit dus geen extra informatie geeft.
10
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009 Duid één voor één de twee velden aan en klik telkens op het knopje met pijltje naar rechts. Mocht je verkeerd zijn dan kan je in de rechterkolom een veld aanduiden en op het knopje naar links drukken waardoor het veld terug in de linkerkolom beland. Druk op .
Om het de gebruiker gemakkelijk te maken is het goed om de resultaten de sorteren op naam van de gemeente. Dat doen we in het volgende scherm.
Kies uit de keuzelijst het veld ‘PST_GemeenteNaam en kies . Je kan eventueel nog ‘oplopend’ of ‘aflopend’ sorteren door op de knop naast de keuzelijst te klikken. Klik op . 11
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
De sleutelkolom staat verborgen. De sleutelkolom zal gebruikt worden om bewaard te worden in de tabel. (zie later). Als het vinkje niet aan staat dan krijgt je het bij het drukken op het venter hieronder. In het volgende venster wordt bepaald welk gegeven uit de lijst moet bewaard worden of kan gebruikt worden in een latere bewerking. Voor ons is de latere bewerking het wegschrijven naar de tabel tblPersonen in het veld ‘Gemeentenummer’. De wizard geeft ook aan dat het veld dat je kiest éénduidig (unieke waarde) de rij aanduidt in de lijst. Dit is dus de ID (primaire sleutel uit de tblPostcodes).
12
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
We duiden dus ‘PST_GemeenteNummer aan en kikken op . De waarde die we bewaren wordt in de lijst (straks) de afhankelijke kolom genoemd.
Nu moet je nog een label mee geven met deze lijst. Dit label verschijnt op het formulier. We tikken ‘Gemeente :’ en klikken op . Dit is het resultaat. Het label staat boven het tekstvak ‘Postnummer’. We verplaatsen het label door het bruine vierkantje (links boven het label ‘Gemeente:’ en dit te verslepen boven de lijst die we 13
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009 gemaakt hebben. We maken de lijst zelf wat breder (voor grotere gemeentenamen). Dan doen we door rechts van de lijst het middelste oranje vierkantje te verslepen naar rechts. Dit is het resultaat in ‘ontwerpweergave’ en in ‘weergave’. In het navigatievenster staan nog heel wat tabellen en queries die niet in ons database- voorbeeld staan. Alle tabellen en queries die niet in ons voorbeeld zijn opgenomen mogen genegeerd worden. Ze worden voorlopig toch niet gebruikt in onze oefening. In onze database moeten staan : tblPersonen, tblPostcodes, qryOpzoekenGemeente, qryInvoerenPersonen en frmInvoerenPersonen.
We bewaren de wijzigingen op het formulier.
14
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009 Tik nu in het tekstvak ‘txtPostnummer’ ‘9000’ en druk op de tab-toets of <Enter> om het veld te verlaten. Druk nu op het lint op de knop in de groep . Klik nu op de lijst van de gemeentes en daar zie je Gent staan.
We zien dat in de lijst zowel de ID als de gemeentenaam is opgenomen. Dit is niet de uiteindelijke bedoeling. We gaan dit aanpassen in het eigenschappenvenster van de keuzelijst. Ga terug naar de ‘ontwerpweergave’ van je formulier en selecteer de keuzelijst ‘Gemeente’. Druk nu op het lint uiterst rechts op de knop <Eigenschappenvenster> en dan krijg je het volgende scherm.
We passen het volgende aan in het eigenschappenvenster.
15
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009 In het tabblad [Alle] tik je naast naam i.p.v. ‘Keuzelijst met invoervak20’ ‘LstGemeente’ en druk op <Enter>. Dit is de nieuwe naam van het object die we net gemaakt hebben.
Onder het tabbald *Opmaak+ vervang je naast ‘Kolombreedten’ de eerste ‘2,54cm’ door ‘0’ en druk op de tab-toets op je klavier. Met onderstaande resultaat.
Hiermee heb je de eerste kolom van de lijst (die bestaat uit twee kolommen – zie veld er juist boven ‘Aantal kolommen’) onzichtbaar gemaakt. De breedte is nu 0 cm zodanig dat deze niet te zien is. Even kijken op het tabblad *Gegevens+ en daar zien we dat de ‘afhankelijke kolom’ de kolom 1 is. Het is dan ook die waarde die later kan gebruikt worden om te bewaren of de lijst aan te spreken om te zien welke keuze is gemaakt.
Naast het veld ‘Rijbron’ zie je hier de SQL-weergave van de query die we gebruiken voor deze lijst. Daar zien we dat de eerste kolom het veld [Id] is van de query [qryOpzoekenGemeente]. Ook als deze verborgen is (kolombreedte = 0 cm) kan deze nog altijd gebruikt worden. De waarde zit nog altijd in de lijst maar kan door de gebruiker niet gezien worden. De programmeur (jij dus) kan deze waarde nog altijd gebruiken, en dat zullen we straks ook doen. Gaan we nu terug naar de ‘Weergave’ van het formulier geeft dit volgende resultaat :
16
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
Klik je nu op ‘Gent’ dan wordt deze waarde in het invoervak van de lijst gebracht.
Vul nu even ‘9940’ en druk op de tab-toets (om het veld te verlaten) in bij ‘Postnummer’ – druk op op het lint en klik nu op ‘LstGemeente’. Dan krijg je volgend resultaat.
17
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
Hier moet de gebruiker dan de juiste gemeente kiezen. Het zal uiteindelijk de ‘verborgen’ ID van deze gemeente zijn die bewaard wordt in de tblPersonen. Nu moeten we telkens drukken op de knop als we een nieuw postnummer hebben ingevuld en het veld hebben verlaten. We zullen dit door een macro laten gebeuren. Een nieuw postnummer invullen en het veld verlaten is voor Access ‘Na bijwerken’. In het eigenschappen-venster bij ‘Gebeurtenissen’ zullen we bij de gebeurtenis ‘Na bijwerken’ een macro maken die het vernieuwen voor ons doet. Klik in het tekstvak ‘txtPostnummer’ en klik in het Eigenschappenvenster op het tabblad [Gebeurtenissen].
Klik in ‘Na bijwerken’ op het knopje met de drie puntjes en kies dan voor “Opbouwfunctie voor macro’s” en klik op .
Klik dan eerst op de knop ‘Alle acties weergeven’ zodanig dat alle macro-acties mogelijk zijn.
18
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
In het macroraster kunnen we nu een eenvoudige macro maken om het de lijst met gemeentes, LstGemeente, telkens te laten vernieuwen. Kies in het raster voor ‘QueryOpnieuwUitvoeren’ en onderaan naast besturingselement vul je het besturingselement in dat je wenst te vernieuwen : LstGemeente (let op : geen tikfouten maken – de naam van het object moet juist zijn).
Daarna klikken op de knop <Sluiten> en bewaren we de macro. In het eigenschappenvenster staat nu naast ‘Na bijwerken’ : *Ingesloten macro+. Dat is de macro die we daarnet hebben gemaakt. Door op het knopje met de drie puntjes te klikken kan je de macro terug oproepen en wijzigen.
19
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
We komen terug in ons formulier terecht. Om de lay-out van ons formulier nog licht aan te passen wijzigen we nog enkele eigenschappen in het tabblad [Opmaak] : - Bijschrift : Invoeren personen … - dit wordt de titel van het formulier i.p.v. frmInvoerenPersonen. - Autocentreren : Ja – daardoor wordt het formulier steeds in het midden van het scherm geopend. - Randstijl : Dialoog – dit zorgt er voor dat het formulier niet kan aangepast worden door de gebruiker. - Recordkiezers : Nee – daardoor verdwijnt de vertikale lijn met het zwarte pijltje bovenaan. Dit is enkel nodig bij een ‘doorlopend formulier’ waarop je meerdere records gelijktijdig ziet. - Navigatieknoppen : Nee – hierdoor verdwijnt onderaan het formulier de knoppen om in de verschillende records die je in één sessie hebt toegevoegd te bladeren. Ga nu terug naar de ‘Weergave’ van het formulier en probeer nu een postnummer in te vullen en kijk of de lijst ‘LstGemeente’ telkens opnieuw wordt opgevuld (QueryOpnieuwUitvoeren). Dit is het resultaat.
20
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
Het veld en het label ‘Gemeente’ mogen verwijderd worden – want dit is hier niet meer nodig. Het veld ‘Telefoon’ en zijn label verschuif je wat naar boven. Nu nog de tab-volgorde aanpassen. Daarvoor ga je naar ontwerp weergave. Klik op het tekstvak ‘txtPostnummer’. In Eigenschappenvenster op het tabblad *Overige+ vind je de bij ‘Tabvolgorde’ het getal 3. Klik nu op het object ‘LstGemeente’ en in het Eigenschappenvenster bij [Overige] – ‘Tabvolgorde’ tik je 4. Alle andere tabvolgordes van de andere objecten gaan automatisch één plaatsje verhogen zodanig dat alles in de juiste volgorde kan worden doorlopen. Bewaar het formulier en open het nog even in ‘Weergave’. Test nu even de tabvolgorde door je cursor in het tekstvak ‘txtNaam’ te plaatsen en nu een aantal keren op de tab te drukken. De volgorde van de verschillende objecten op het formulier moet nu gevolgd worden – buiten de CmdSluiten die geen tabstop heeft (zie vroeger).
Om de gemeente nu te bewaren moeten we in onze query niet meer de informatie van ‘txtGemeente’ wegschrijven, want dit object hebben we juist verwijderd. We moeten nu de informatie uit de keuzelijst ‘LstGemeente’ wegschrijven. De query die daar verantwoordelijk voor is moet aangepast worden.
21
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009 Het is de inhoud van de afhankelijke kolom van de keuzelijst die zal weggeschreven worden. In dit geval is het de ID van de gemeente die in de tabel zal weggeschreven worden in het veld ‘Gemeentenummer’. Open de query ‘qryInvoerenPersonen’ in ontwerpweergave.
In het queryveld ‘Postnummer’ wijzig je *txtPostnummer] in [LstGemeente] (het object waar nu de gemeente wordt getoond). Dit gegeven moet nu weggeschreven worden naar het veld ‘P_Postnummer’. Het gegeven dat ingevuld staat op het formulier in ‘txtPostnummer’ wordt nu enkel meer gebruikt om de gemeente op te zoeken, maar het wordt niet meer bewaard – want de gemeente wordt nu ondubbelzinnig bepaald door het gemeentenummer dat in LstGemeente gekozen is. Het veld ‘Gemeente’ in het queryraster mag verwijderd worden omdat dit veld op het formulier i verwijderd. Dit is het eindresultaat na de wijzigingen van de query.
Veldnaam P_Postnummer wordt P_Gemeentenummer De naam van het veld P_Postnummer in de tabel ‘tblPersonen’ is niet echt representatief voor de inhoud en we gaan dit wijzigen in de tabel. We veranderen de naam in P_Gemeentenummer. Het veld ‘P_Gemeente’ heeft nu geen zin meer en mag verwijderd worden. We openen de tabel ‘tblPersonen’ in ontwerpweergave door er rechts op te klikken en te kiezen voor ‘Ontwerpweergave’. We veranderen de veldnaam P_Postnummer in P_Gemeentenummer en schrappen het veld ‘P_Gemeente’ door het te selecteren (klik op de rijkop voor het veld) en op de Delete-knop te drukken op je klavier. Ook kan je op het lint op de knop klikken. Let op : de gegevens nu nog in dit veld zijn opgenomen worden verwijderd. Dit is niet erg want elke gemeente is nu uniek gedefinieerd door zijn ‘gemeentenummer’. Bij de verwittiging dat de gegevens zullen geschrapt worden mag je <Ja> drukken.
22
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
Sluit de tabel en bewaar de aangebrachte wijzigingen door op <Ja> te drukken als het systeem er om vraagt. Wanneer we nu naar de query kijken is daar ook P_Postnummer vervangen door de nieuwe veldnaam P_Gemeentenummer. Let op : dit is niet altijd het geval. Dus het best is van je veldnamen correct te kiezen zodanig dat je nooit de namen moet wijzigen. De veldnamen worden niet altijd automatisch hernoemd op de verschillende objecten (formulieren, rapporten, …).
Wanneer we daarnet de tabel bekeken bleek dat er nog twee velden niet opgenomen waren in ons formulier. Voor de velden ‘P_Gender’ en ‘P_Geboortedatum’ zijn er nog geen invoervelden voorzien in ons formulier. We openen het formulier in ontwerpweergave en gaan eerst een veld toevoegen om de geboortedatum toe te voegen. We selecteren op het formulier het label en het bijhorende tekstvak ‘txtTelefoon’ en kopieren dit op het formulier door achtereenvolgens te drukken op Ctrl+C en Ctrl+V. Het nieuwe label veranderen we via het Eigenschappenvenster. In het Eigenschappenvenster op het tabblad *Alle+ tikken we bij Naam : ‘lblGeboortedatum’ en bij Bijschrift : ‘Geboortedatum :’. We klikken dan op het onafhankelijk tekstvak naast dit label en in het eigenschappenvenster in het tabblad *Alle+ wijzigen we de naam ‘Tekst24’ (of iets dergelijks) in txtGeboortedatum. We selecteren op het formulier alle labels door in de horizontale liniaal te klikken ter hoogte van de labels. En dan verbreden we de labels naar links, zodanig dat ‘Geboortedatum :’ volledig leesbaar is. We lijnen ze ook rechts uit door in het lint op de tab [Ontwerpen] in de groep te klikken op het knopje voor rechts uitlijnen. 23
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
Nu nog de mogelijkheid maken van een geslacht mee te geven met de persoonsgegevens. Daarvoor gaan we een keuzelijst met invoervak aanmaken. Net zoals we daarnet gedaan hebben bij de LstGemeente. Kies bij de voor ‘Keuzelijst met invoervak’ en klik dan op het formulier onder het object ‘txtGeboortedatum’. Een wizard opent zich.
Omdat de mogelijkheden beperkt zijn en nooit veranderen gaan we deze waarden gewoon intikken. Kies ‘De waarden zullen worden getypt.’ En druk op .
24
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
De wizard geeft aan dat er één kolom is. Wijzig dit in twee. In de eerste kolom tikken we de waarde die zal opgeslagen worden in de tabel, nl. M en V. In de tweede kolom tikken we de waarde die zal te zien zijn in de lijst en waaruit de gebruiker zal moeten kiezen. Druk op . De waarde die zal gebruikt worden om te bewaren is de waarde uit kolom 1. Dit geven we hier ook aan.
Druk op . Geef nu nog een label mee dat op het formulier verschijnt : ‘Geslacht :’ en druk op .
25
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
De lijst verschijnt nu op het formulier. Verplaats de twee knoppen naar beneden want deze staan te dicht bij de lijst. Lijn het label van “Geslacht” uit met het bovenliggende label. Selecteer beide labels en klik op de groep <Schikken>. Kies daar in de groep voor . Klik terug op het label en kies op het tabblad [Ontwerpen] voor het rechts uitlijnen van de tekst in het label (zie hoger bij uitlijnen van de andere labels). Dit is het eindresultaat :
26
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009 In Weergave is dat :
Als je nu echt naar de details kijkt dan kan je de uitlijnen nog verbeteren – maar dat laat ik aan jou over. Klikken we nu op de lijst van het geslacht dan zien we nog de twee kolommen. Dit is niet de bedoeling we gaan dit aanpassen via het Eigenschappenvenster.
Ga terug in ontwerpweergave van het formulier. Selecteer de lijst van het geslacht en in het Eigenschappenvenster pas je volgende items aan : Tabblad [Opmaak] [Opmaak] [Opmaak] [Overige]
Item Kolombreedten Aantal rijen Lijstbreedte Naam
Waarde 0 cm;2,54 cm 2 2,54 cm LstGeslacht
Selecteer het label dat bij de lijst van het geslacht staat en in het Eigenschappenvenster pas je volgende items aan : 27
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
Tabblad [Alle]
Item Naam
Waarde lblGeslacht
Zo is ons formulier ook klaar. De lijst van geslacht is nu wat smaller geworden en de lijst toont maar twee rijen – want uiteindelijk zijn er maar twee waarden ‘man’ en ‘vrouw’.
Nu nog onze query die de gegevens wegschrijft naar de tabel ‘tblPersonen’. In een vroeger stadium van onze oefening hebben we gezien hoe je de query aanpast. We geven hier gewoon de waarden mee en het eindresultaat. Veld Geboortedatum: [Forms]![frmInvoerenPersonen]![txtGeboortedatum] Geslacht: [Forms]![frmInvoerenPersonen]![LstGeslacht]
Naar welk veld in de tabel P_Geboortedatum P_Gender
Dit is het eindresultaat. Dit hebben we bekomen door gebruik te maken van de wizard ‘Opbouwfunctie voor expressies’ die we reeds vroeger een aantal keren hebben gebruikt.
Nu nog even de tabvolgorde controleren. Open het formulier in ‘Ontwerpweergave’ en open het ‘Eigenschappenvenster’. Klik op het object ‘txtTelefoon’ – het veld net boven txtGeboortedatum (dat we toegevoegd hebben). In het Eigenschappenvenster klik je op het tabblad [Overige] waar je ziet dat de tabvolgorde van txtTelefoon (in mijn toepassing – bij jullie kan dit licht anders zijn) 5 is. Wil ik nu dat txtGeboortedatum de volgende tabstop is klik ik op het object ‘txtGeboortedatum’ en pas in het Eigenschappenvenster de waarde ‘tabvolgorde’ aan naar 6. 28
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
Klik daarna op ‘LstGeslacht’ en pas de tabvolgorde aan naar 7 (één hoger). Doe hetzelfde met de CmdOpslaan en geef deze 8. Op die manier zullen de verschillende objecten elkaar op volgen. Bij het opslaan hadden we voorzien dat alle velden blanco werden gezet door de macro die schuil gaat achter de knop CmdOpslaan. We moeten deze macro nu aanpassen voor het verdwenen object ‘txtGemeente’ en voor de toegevoegde objecten ‘LstGemeente’, ‘txtGeboortedatum’ en ‘LstGeslacht’. Klik op de knop en in het Eigenschappenvenster kies je voor [Gebeurtenis]. Bij het item ‘Bij klikken’ klik je even in *Ingesloten macro]. Daarna klik je op het knopje met de drie puntjes en kom je in het macroraster terecht. Pas dit als volgt aan – aanpassing aan de argumenten kan je enkel onderaan het scherm bij ‘Actieargumenten’ – je kan niets wijzigen in de kolom ‘Argumenten’ waar de tekst grijs staat. Actie WaardeInstellen Moet worden
Argumenten Expressie [Forms]![frmInvoerenPersonen]![txtGemeente] “” [Forms]![frmInvoerenPersonen]![LstGemeente] “”
Voeg voor ‘Naar besturingselement gaan’ Actie WaardeInstellen WaardeInstellen
Argumenten Expressie [Forms]![frmInvoerenPersonen]![txtGeboortedatum] “” [Forms]![frmInvoerenPersonen]![LstGeslacht] “”
Met het volgende als eindresultaat :
29
Frank Van Oost
[Microsoft Access 2007 – Een eigen database maken] 4 november 2009
Sluit de macro en bewaar de wijzigingen. Bij het opslaan zullen nu alle gegevens mooi weggeschreven worden naar het juist veld in de tabel ‘tblPersonen’. Doe de test …..
30
Frank Van Oost