De student moet in staat zijn een formulier met subformulier te bouwen op
basis van twee gekoppelde tabellen.
In de voorgaande webpagina werden twee tabellen aan elkaar gekoppeld in je
'Personeelsdatabase'.
De persoons- en adresgegevens van elke werknemer worden beschreven in een record in de tabel 'Werknemers
Adressen'. De gegevens betreffende een computercursus worden daarentegen beschreven in de tabel 'Computercursussen'.
Thans moet een formulier worden gebouwd dat toelaat om voor de werknemers
telkens een
nieuwe record toe te voegen aan de tabel 'Computercursussen', wanneer zij een
nieuwe PC-opleiding hebben gevolgd. Onderstaande tabel geeft dit
schematisch weer. De blauwe tekst is informatie die (onder meer) in de
tabel 'Werknemers Adressen' zit opgeslagen, terwijl de andere tekst middels het
nieuwe te maken formulier moet worden ingevoerd per PC-opleiding.
Werknemers Adressen |
Computercursussen |
Familienaam |
Voornaam |
Cursusnaam |
Startdatum |
Aantal uur |
Kostprijs |
Janssens |
Jan |
Windows 2000 |
19/10/2009 |
4 uur |
150 |
|
|
Microsoft Word |
09/11/2009 |
12 uur |
500 |
|
|
Microsoft Excel |
20/11/2009 |
12 uur |
525 |
Peters |
Piet |
Internet |
0/10/2009 |
3 uur |
20 |
|
|
Microsoft Word |
09/11/2009 |
12 uur |
500 |
Martens |
Maarten |
Microsoft Access |
22/11/2009 |
18 uur |
650 |
|
|
Microsoft Powerpoint |
09/01/2009 |
6 uur |
200 |
Om dergelijke gegevensinvoer mogelijk te maken kan best een zogenaamd
hoofdformulier met subformulier worden gemaakt:
- In het hoofdformulier zou in dit geval de informatie betreffende de
werknemer moeten getoond worden, zonder dat het eigenlijk noodzakelijk is
dat de gebruiker van het formulier deze werknemersgegevens op dat moment kan wijzigen,
omdat je daartoe het formulier 'Werknemersadressen invoeren' hebt gemaakt.
- In het subformulier moet voor elke werknemer in het hoofdformulier een in
principe oneindig aantal PC-opleidingen kunnen worden ingevoerd.
We zullen dus eerst een hoofdformulier en daarna een subformulier bouwen, die
we in een laatste stap samenbrengen in één formulier:
Hoofdformulier |
WerknemersID: |
1 |
|
Familienaam: |
Janssens |
|
Voornaam: |
Jan |
|
Subformulier |
CursusID: 1 |
WerknemersID: 1 |
|
Cursusnaam: .................. |
|
|
Startdatum: __/__/____ |
Aantal uur: |
Kostprijs: ...............€ |
- Open je Personeelsdatabase op je memorystick, harde schijf of Homedrive
- Klik in het tabblad 'Maken' op de opdrachtknop 'Wizard formulier' van de groep
'Formulieren'
- Daardoor wordt de 'Wizard Formulier' opgestart
- Selecteer in het eerste beeldscherm van de wizard in het rolmenu
'Tabellen/query's' eerst voor de tabel 'Werknemers
Adressen'.
- Kies vervolgens in de lijst 'Beschikbare velden:' de velden 'WerknemersID', 'Familienaam' en 'Voornaam', door deze veldnamen één na één eerst aan te
klikken, om deze te selecteren, en vervolgens op de knop
te klikken.
Daardoor worden ze naar de lijst 'Geselecteerde velden:' overgebracht.
Klik daarna op de knop 'Volgende'
- Kies in het tweede beeldscherm van de wizard voor de opmaak 'In kolomvorm'
en klik op 'Volgende'
- Geef het formulier ten slotte een gepaste naam mee, bijvoorbeeld 'Invoer
PC-opleiding' en klik op 'Voltooien'
- Het hoofdformulier ziet er dan ongeveer als volgt uit (maar je kan er uiteraard een ander thema op toepassen):
- Vermits het eigenlijk niet de bedoeling is dat gebruikers van dit
invulformulier voor PC-opleidingen, ook de werknemersgegevens in het
hoofdformulier kunnen wijzigen, kunnen we dit beter voorkomen.
- Open het formulier 'Invoer PC-opleiding' in ontwerpweergave .
- Selecteer gelijktijdig de drie invoervakken (en dus niet de labels).
- Klik op de opdrachtknop 'Eigenschappenvenster' in het tabblad 'Ontwerp'.
- Klik in het 'Eigenschappenblad' op het tabblad 'Gegevens' en stel de
eigenschap 'Vergrendeld' in op 'Ja'. Daardoor kunnen de eerder ingevoerde
gegevens in deze drie velden niet worden gewijzigd vanuit dit
hoofdformulier. Sluit het eigenschappenblad terug af.
- Pas de lay-out van het formulier enigszins aan en sla het formulier
opnieuw op:
- Bekijk het formulier opnieuw in formulierweergave en stel vast dat thans
de werknemersgegevens wél getoond worden, maar niet meer kunnen worden
gewijzigd.
- Om van de ene werknemer naar de andere te navigeren kan je op de
navigatieknoppen ,
onder aan het formulier klikken.
Het subformulier kan op vergelijkbare wijze worden aangemaakt:
- Start de 'Wizard Formulier' opnieuw op
en voer de volgende gegevens in:
- Thans worden alle veldnamen afkomstig uit de tabel
'Computercursussen' geselecteerd. Doorloop de 'Wizard Formulier' tot op
het einde en bewaar het formulier onder de naam 'Computercursussen invoeren'.
- Het resultaat zou op onderstaande afbeelding kunnen lijken:
- Open het formulier in Ontwerpweergave en maak volgende aanpassingen in de
opmaak:
- Verwijder de titel en verberg de Formulierkoptekst
- Herschik de labels en velden (bijvoorbeeld zoals in onderstaande figuur)
- Geef de invoervelden verlaagd weer
- Geef de labels een achtergrondkleur en een andere tekstkleur
- Bewaar het gewijzigde formulier opnieuw.
- In dit subformulier kan straks elke computeropleiding, die een werknemer volgt, worden ingevoerd.
Thans is het zaak om het hoofdformulier en subformulier 'in elkaar te
schuiven' zodat elke ingevoerde computercursus aan een specifieke medewerker
wordt toegewezen. Dat gaat als volgt.
- Open het hoofdformulier 'Invoer PC-opleiding' in ontwerpweergave en maak
het ontwerpraster van het formulier wat groter, zodat het subformulier er onderaan kan
worden ingepast.
Maak daartoe de detailsectie eventueel wat breder en langer.
- Klik op het tabblad 'Ontwerp' in de groep 'Besturingselementen' op de opdrachtknop 'Subformulier/subrapport' (controleer evenwel eerst of de knop 'Wizards voor besturingselementen gebruiken' actief is).
- 'Teken' de omkadering van het subformulier af, onder aan het
hoofdformulier door met ingedrukte linkermuisknop te slepen.
- Na het 'aftekenen' van het subformulier in het hoofdformulier, start meteen
een wizard op. Selecteer in het eerste beeldscherm van de 'Wizard Subformulier' de naam van
het in te voegen subformulier. In dit voorbeeld is dat het daarstraks aangemaakte
formulier 'Computercursussen invoeren', dat je kan selecteren nadat je het keuzerondje 'Een bestaand formulier gebruiken' hebt aangeklikt.
Klik op de knop 'Volgende'.
- In het tweede beeldscherm van de wizard kan worden opgegeven welk veld in
het hoofdformulier en welk veld in het subformulier voor de koppeling tussen
de twee formulieren moeten worden
gebruikt. De wizard toont daartoe een rolmenu met suggesties.
In dit geval toont deze lijst slechts één optie 'Computercursussen
weergeven voor elke record in Werknemers Adressen met Werknemersidentificatie'. Je zou deze optie
zonder probleem kunnen selecteren.
Je kan echter ook eerst de optie 'Zelf bepalen' selecteren door het keuzerondje dat deze optie voorafgaat aan te klikken.
Vervolgens selecteer je middels een rolmenu van het invoerveld linksboven de veldnaam
'WerknemersIdentificatie' van de tabel 'Werknemers Adressen' als koppelveld in het
hoofdformulier en (in het invoerveld rechtsboven) eveneens de veldnaam 'WerknemersId' van de tabel
'Computercursussen' als koppelveld voor het subformulier.
Klik nadien op de knop 'Volgende'.
- Vul in het laatste beeldscherm van de 'Wizard Subformulier' een naam in voor
het subformulier (je mag ook de voorgestelde naam bevestigen) en klik op
'Voltooien'.
- Het subformulier wordt daardoor weergegeven in het hoofdformulier. Indien de uitlijning van het subformulier niet voldoet, dan kan je de (oranjekleurige) omkadering van het subformulier op de gebruikelijke wijze aanpassen met behulp van de vulgrepen.
- Open het formulier in Formulierweergave en test de invoermogelijkheden
uit.
- De velden 'CursusID' en 'WerknemersID' hoeven door de gebruiker uiteraard niet
te worden ingevuld, dat gebeurt automatisch van zodra een Cursusnaam,
Startdatum, enzovoort in het subformulier wordt ingevoerd. Om deze
reden zou je van de velden 'CursusID' en 'WerknemersID' net zo goed de
eigenschap 'Zichtbaar' op 'Nee' kunnen zetten (zodat ze aan het oog van
gebruikers onttrokken worden).
- Om van de ene werknemer naar de andere te navigeren, kan je helemaal onderaan in het formulier op de navigatieknoppen klikken .
Telkens wordt daardoor het gepaste subformulier getoond: ofwel een
blanco-formulier indien voor de betreffende werknemer nog geen enkele
PC-opleiding werd ingevoerd, ofwel een subformulier met de gegevens
betreffende een eerste computercursus.
- Om van de ene ingevoerde computercursus - gevolgd door één bepaalde
werknemer - naar de andere te navigeren, kan je de navigatieknoppen van het
subformulier gebruiken. Een nieuwe computercursus kan worden
toegevoegd door op de knop 'Nieuwe (lege) record)"
te klikken.
- Voeg voor een aantal werknemers één of meerdere PC-opleidingen in. In onderstaande tabel worden daartoe enkele voorbeelden getoond die je daarbij kan gebruiken. Later zullen we deze gegevens aangaande computercursussen gebruiken om een rapport te maken.
Computercursussen
Cursusnaam |
Startdatum |
Aantaluren |
Kostprijs |
Visual Basic |
12/01/2012 |
24 |
1.000 € |
Microsoft Access voor beginners |
23/02/2011 |
8 |
200 € |
Microsoft Access voor gevorderden |
2/03/2011 |
12 |
300 € |
Microsoft Excel beginners |
22/12/2010 |
4 |
125 € |
Microsoft Excel voor gevorderden |
12/01/2012 |
6 |
750 € |
Internet Explorer |
23/02/2011 |
4 |
100 € |
Microsoft Outlook |
8/01/2011 |
4 |
200 € |
Microsoft Excel voor beginners |
22/01/2010 |
4 |
125 € |
Microsoft Excel voor gevorderden |
7/02/2012 |
6 |
200 € |
- In de voorbeelddatabase 'PersoneelsdatabaseVoorbeeld.accdb'
kan je een voorbeeld van dit hoofdformulier met subformulier vinden onder de naam 'Invoer PC-opleiding'.
Klik hier om de oefening 'Jobstudenten'
te starten.
Klik hier om de oefening 'Studiedagen'
te starten.
Helpprogramma bij Microsoft Access 2010: zoek op 'subformulier'.