De student moet in staat zijn om records in een database op te zoeken aan de hand
van query's en daartoe een gepaste query te ontwerpen.
Tot nu toe werd uitgelegd hoe gegevens in een database kunnen worden
opgeslagen en hoe ze kunnen worden beheerd (wijzigen, wissen, sorteren,...) al dan niet gebruikmakend van een formulier.
Thans richten we de aandacht op het 'exploiteren' van databases en dan in het bijzonder
door een database te 'ondervragen': vragen om bepaalde records te selecteren en te
tonen.
Access maakt daarbij gebruik van een vraagtaal - een 'query language', die 'SQL' (Standard Query Language) genoemd wordt - om specifieke records uit een
database te selecteren.
Met deze vraagtaal kan je bijvoorbeeld in een personeelsdatabase:
- Een lijst van medewerkers maken die in een bepaalde stad wonen.
- Een overzicht maken van het aantal opleidingen dat medewerkers gevolgd
hebben.
- Medewerkers ordenen op basis van hun aantal jaren dienst, enzovoort.
Vermits er meerdere typen query's bestaan kan je met query's veel meer doen dan in
de vorige paragraaf gesuggereerd wordt. Naast de zogenaamde 'Selectiequery' bevat Access nog andere querytypes: interactieve query, kruistabelquery, samenvoegquery, enzovoort. Deze querytypes komen verder in dit zelfstudiepakket aan bod.
In een selectiequery worden de geselecteerde velden, afkomstig uit
één of zelfs meerdere tabellen, 'bij elkaar gebracht'.
Aan één of meerdere van deze velden kan een criterium worden verbonden,
waaraan voldaan moet zijn wanneer de query wordt uitgevoerd.
Het resultaat van een query is dus een geselecteerd aantal velden (dus niet
noodzakelijk alle velden uit een tabel) waarin enkel de informatie van records
wordt getoond die aan de gestelde selectiecriteria voldoen (en dus niet àlle
records uit een tabel).
Op basis van een selectiequery kan vervolgens een formulier worden gemaakt, waarin enkel
de geselecteerde velden en records getoond worden, of een rapport waarmee de
geselecteerde velden en records kunnen worden geanalyseerd en afgedrukt.
- Om een selectiequery (of elke ander querytype) te construeren klik je in het lint op het tabblad 'Maken'.
- Links in het tabblad zit de groep 'Query's'.
- In deze groep zijn thans twee opdrachtknoppen van belang 'Wizard Query' en 'Queryontwerp' . Ze geven twee manieren aan waarop een query kan worden gebouwd: met of zonder wizard.
Om een selectiequery te kunnen bouwen, heb je noodzakelijkerwijze een tabel nodig, die als basis voor de query zal dienen.
Een tabel bevat vaak veel meer velden dan je op een bepaald moment nodig hebt om een specifieke taak te volbrengen. Voor een lijst, die bijvoorbeeld de woonplaats van werknemers weergeeft, zijn slechts drie tabelvelden nodig: de namen, voornamen en postnummers. De lijst moet worden gesorteerd op het veld postnummer.
- Open andermaal je 'Personeelsdatabase'
- Klik in het lint op het tabblad 'Maken'
- Klik in de groep 'Query's' op de opdrachtknop 'Wizard Query'
- Daardoor wordt het dialoogvenster 'Nieuwe query' geopend
- Selecteer de optie 'Wizard Selectiequery' en klik op de knop 'OK'
- De wizard toont een tweede beeldscherm:
- Selecteer de tabel waaruit de selectiequery de nodige velden kan ophalen
- Klik op een veldnaam in de lijst 'Beschikbare velden' om het veld te selecteren
- Klik op de knop om het veld naar de lijst 'Geselecteerde velden' te verplaatsen
- Klik op de knop 'Volgende' wanneer alle benodigde velden werden geselecteerd
- In het derde beeldscherm vraagt de wizard of je de uitkomsten in detail wil weergeven (per record) of dat je daarentegen totalen (voor alle 'gevonden' records samen) wil weergeven. In dit geval kiezen we voor de optie 'Details' en klik je op de knop 'Volgende'.
- Wijzig de voorgestelde naam in een betekenisvolle naam, die de functie van de query toelicht. Bijvoorbeeld: 'Werknemers naar woonplaats'
- Klik op de knop 'Voltooien' om het resultaat van de selectiequery te bekijken: een tabel waarin de namen van alle eerder ingevoerde werknemers worden weergegeven, evenals het postnummer.
Noot: indien niet voor alle werknemers het postnummer werd ingevoerd, dan kan je dat ofwel nu in de tabel - uitkomst van de selectiequery - meteen doen, ofwel aan de hand van één van de eerder aangemaakte formulieren.
- Bemerk ook dat in het navigatiedeelvenster de nieuwe query wordt weergegeven onder het kopje 'Query's, achter het icoon met overlappende tabellen , en dat de query wordt weergegeven in 'Gegevensbladweergave' (zoals rechts onderaan in de statusbalk wordt aangegeven door het icoon )
- Om de tabelgegevens te sorteren op postnummer ga je als volgt te werk (verder in deze cursus wordt deze procedure en onderstaand beeldscherm nader toegelicht)
- Klik in het tabblad 'Start' op de knop 'Weergave' of in de statusbalk op de knop 'Ontwerpweergave'
- Klik onder de veldnaam 'Postnummer' op de cel in de rij 'Sorteervolgorde' en vervolgens op de daardoor getoonde vervolgknop
- In de geopende vervolgkeuzelijst kies je voor de optie 'Oplopend'
- Om de selectiequery opnieuw uit te voeren, klik je in het tabblad 'Ontwerp' van het lint op de opdrachtknop 'Uitvoeren' van de groep 'Resultaten'
- Access toont de nieuwe uitkomst van de query: een namenlijst gesorteerd op postnummer
- Sla de selectiequery andermaal op , waarna je deze mag sluiten:
- klik met de rechtermuisknop op de querynaam en kies 'Sluiten' in het vervolgmenu
- OF: klik op de sluitknop rechts van de querynaam
Onderstel dat we nieuwe een selectiequery willen bouwen in onze
'Personeelsdatabase' op basis van de eerder
gemaakte tabel 'Werknemers Adressen'. Deze query moet enkel de vrouwelijke werknemers uit
de gehele database lichten en ze geordend weergegeven op datum van
indiensttreding.
Zorg er daartoe voor dat je in deze tabel, een tiental medewerkers hebt ingevoerd (klik
hier
om te lezen hoe dit kan), mannen en vrouwen door elkaar.
- Klik in het lint op het tabblad 'Maken'
- Klik vervolgens in de groep 'Query's' op de opdrachtknop 'Queryontwerp' .
- Access opent het dialoogvenster 'Tabel weergeven' waarin je de tabel (of andere query) kan selecteren, waarin zich de velden bevinden die je in de nieuwe query wil opnemen
- Op dit moment bevat je Personeelsdatabase slechts één tabel en één query (klik op de tab 'Beide' om dit te controleren). Kies in dit voorbeeld voor de tabel 'Werknemers Adressen'
en klik op de knop 'Toevoegen'.
- De
tabel en de tabelvelden worden in een venster aan de query (met als voorgestelde naam 'Query1') toegevoegd.
- Vermits je meerdere tabellen (of query's) als basis voor de nieuwe query kan toevoegen, blijft het venster 'Tabel weergeven' geopend. Omdat er echter geen andere tabellen moeten worden toegevoegd, klik je op de knop 'Sluiten'. Hierdoor
wordt het queryvenster van de nieuwe query actief in ontwerpweergave.
-
Het queryvenster omvat twee delen.
- Het bovenste venster bevat de tabellen en query's die zojuist
geselecteerd werden. In ons voorbeeld werd enkel de tabel 'Werknemers
Adressen' aan de query toegevoegd, welke thans verschijnt als een venster waarin alle
velden van de tabel in een rolmenu beschikbaar zijn.
- Het onderste deel van het queryvenster is het ontwerpraster of
QBE-raster. QBE staat voor een manier om query's te maken,
namelijk: Query's By Example. Dit is een grafische methode om
query's te bouwen door veldnamen vanuit het
bovenste venstergedeelte naar het onderste te slepen.
- De belangrijkste opdrachten die met betrekking tot query's kunnen worden
uitgevoerd, staan thans automatisch in het tabblad 'Ontwerp' van het contextuele tabblad 'Hulpmiddelen voor query's'.
Stel dat in voornoemd overzicht voor elke werkneemster dient te worden weergegeven: de naam, de voornaam, de datum van indiensttreding
en het geslacht.
- Selecteer in de lijst met tabelvelden, bovenaan het beeldscherm, de veldnaam
'Familienaam' in de tabel 'Werknemers Adressen'.
- Hou de linkermuisknop ingedrukt en sleep de veldnaam naar het onderste
deel van het venster. Laat de muisknop pas los wanneer de veldnaam
gepositioneerd is boven de eerste cel achter de melding 'Veld:'.
- Wanneer je de muisknop loslaat:
- wordt de veldnaam in de rij 'Veld:'
ingevoegd
- ook de naam van de tabel waaruit het veld afkomstig is, wordt in het ontwerpraster getoond
- en tevens wordt door een aangevinkt selectievakje aangegeven dat het veld later - bij het uitvoeren van de
query - zal worden 'Weergegeven:'.
Noot: Indien je in een query meteen alle velden van een tabel wil invoegen,
volstaat het om het sterretje in het venster met veldnamen naar het ontwerpraster te slepen.
Een alternatieve werkwijze voor het toevoegen van velden aan de query gaat als volgt:
- Klik in het ontwerpraster op de cel van de rij 'Veld:' waaraan je een veld wil toevoegen, waardoor een vervolgknop verschijnt
- Klik op de vervolgknop om een keuzelijst met alle veldnamen uit de eerder geselecteerde tabel of query te openen
- Klik op de toe te voegen veldnaam
Een derde werkwijze om velden aan een query toe te voegen, is veruit de eenvoudigste: dubbelklik in de lijst met tabelvelden op de namen van velden die je wil invoegen. De volgorde van aanklikken bepaalt de volgorde waarin de velden verschijnen in de queryuitkomst.
Volg één van de voornoemde drie werkwijzen om de veldnamen 'Voornaam', 'Geslacht' en 'Datum in
dienst' in het onderste vensterdeel in te voegen. Het ontwerpraster ziet er dan
als volgt uit.
Mocht de volgorde waarin de velden in het ontwerpraster voorkomen niet gepast zijn, dan
kan je deze op de volgende wijze verplaatsen:
- Selecteer de kolom, die moet verplaatst worden, door de muiswijzer net boven
de kolom te plaatsen en te klikken wanneer deze wijzigt in een zwarte
neerwaartse pijl.
- Na het klikken op de kolomkop van het geselecteerde veld, sleep je het veld met ingedrukte linkermuisknop naar de
nieuwe locatie.
- Laat de muisknop los wanneer je de nieuwe locatie bereikt hebt, wat tijdens het slepen wordt aangegeven door een zwarte verticale lijn.
- Selecteer in het bovenste vensterdeel het veld dat moet worden ingevoegd.
- Sleep het veld, zoals in de voorgaande paragraaf beschreven, naar de plaats waar het moet worden
tussengevoegd: de kolom waar het tussengevoegde veld moet vóór komen.
- Laat de muisknop los en het veld wordt tussengevoegd.
Om een veld te verwijderen, klik je op de kolomkop van de betreffende kolom en
druk je op de 'Delete'-toets op je toetsenbord.
- Klik op de knop 'Opslaan' in de
werkbalk 'Snelle toegang'
- Vul een gepaste naam in voor de query in het dialoogvenster 'Opslaan als'
- Klik op de 'OK'-knop
Het resultaat van een query kan je zo vaak als nuttig is oproepen ten einde de
werking van de query te testen.
Klik daartoe in het tabblad 'Ontwerp' (groep 'Resultaten') op de knop 'Uitvoeren' ,
waardoor de uitkomst van de query wordt getoond in een basistabel. Deze
basistabel bevat enkel de geselecteerde velden uit de onderliggende tabel(len) en enkel de records zoals
vermeld in de criteria. (zie verder).
Je kan terug overschakelen naar de ontwerpweergave van de query door op de
knop te klikken.
Je kan een eerder opgeslagen query opnieuw openen door in het navigatiedeelvenster op de naam van de query te dubbelklikken. Querynamen worden in dit venster voorafgegaan door een icoon met overlappende tabellen .
Bij het openen van de query wordt deze meteen uitgevoerd (zie voorgaande paragraaf) en worden de uitkomsten gepresenteerd in een uitkomstentabel.
Helpprogramma bij Microsoft Access 2013: zoek op 'query's maken'.