De student moet in staat zijn om aan een selectiequery de gepaste selectiecriteria en sorteringvolgorde toe te voegen.
In de voorgaande bladzijde werd slechts de basis van een nieuwe query gelegd: wanneer de query wordt uitgevoerd, worden weliswaar enkel de geselecteerde velden getoond uit de onderliggende tabel, maar ook alle ingevoerde records in deze tabel worden in de uitkomst opgenomen.
Een query wint uiteraard aan bruikbaarheid indien hij bepaalde records selecteert (filtert) en ordent.
In de voorgaande webpagina werd ondersteld dat een selectiequery moest worden gebouwd die enkel vrouwelijke werknemers selecteert en weergeeft in volgorde van indiensttreding.
Om dergelijk criterium in te voeren 'enkel vrouwelijke medewerkers' stelt het ontwerpraster de rij 'Criteria' ter beschikking.
In de kolom van de veldwaarde, waarvoor het criterium geldt, kan daartoe het criterium in deze rij worden ingetikt als een zogenaamde 'expressie'. Een expressie is een uitdrukking waarin een (selectie)voorwaarde wordt uitgedrukt. Bijvoorbeeld: 'Leeftijd=13' is een expressie die aangeeft dat het veld 'Leeftijd' gelijk moet zijn aan de waarde 13. Klik eventueel hier om nu reeds de volgende webpagina met meer informatie over expressies te tonen.
Om enkel de vrouwelijke medewerkers uit de Personeelsdatabase te lichten, moet dus een expressie worden ingevoerd in de query die uitdrukt dat het veld 'Geslacht' de waarde 'Vrouw' moet bevatten.
Zoals je je uit een voorgaande oefening zal herinneren, werd voor het invoeren van het geslacht in het gelijknamige veld gebruik gemaakt van een keuzelijst met invoervak. Toen werd vastgelegd dat voor de invoer van het label 'Vrouw' de code '1' zou worden gebruikt en voor 'Man' de code '2'. Werknemers waarvoor het geslacht onbekend is, verkrijgen code 9 'Onbekend'.
Thans moet bijgevolg worden ingevoerd dat in het veld 'Geslacht' de waarde '1' moet voorkomen, ten einde enkel vrouwelijke medewerkers te selecteren.
In het ontwerpraster kunnen meerdere criteria voor eenzelfde veld worden opgegeven, die allen gelijktijdig moeten worden toegepast bij het uitvoeren van de query.
Een voorbeeld: onderstel dat in de tabel 'Werknemers Adressen' voor sommige medewerkers het geslacht werd ingevoerd als 'Onbekend' (code 9) en dat we in query 'Werkneemsters naar datum indiensttreding' ook deze 'onbekenden' willen weergeven.
We moeten voor het veld dan twee mogelijke waarden invoeren: ofwel code 1 ofwel code 9
Voer de query opnieuw uit en bemerk dat - indien in de onderliggende tabel voor het geslacht van werknemers de code 9 werd ingevoerd - werknemers met code 1 of met code 9 als waarde voor het tabelveld 'Geslacht' worden weergegeven.
Omdat het hier slechts een oefening betreft, kan je het toegevoegde criterium best terug verwijderen.
Uiteraard kunnen meerdere criteria gelijktijdig voor eenzelfde of voor verschillende velden worden ingevoerd, zoals we straks zullen zien.
Vermits in de kolom 'Geslacht' van de queryuitkomst thans overal de code één voorkomt én omdat in de titel van de query reeds is aangegeven dat het om vrouwelijke medewerkers gaat, is het tonen van het veld 'Geslacht' eigenlijk overbodig.
Om het veld uit de uitkomsttabel te verwijderen, volstaat het om in het ontwerpraster van de query in de kolom 'Geslacht' het vinkje in de rij 'Weergeven:' weg te halen door er één keer op te klikken.
Voer de query opnieuw uit en bemerk dat de kolom 'Geslacht' niet meer wordt getoond:
Stel dat, zoals eerder gezegd, de uitkomst van deze query een sortering op datum van indiensttreding behoeft.
Klik in de kolom van het veld 'Datum in dienst' in de rij 'Sorteervolgorde', waardoor een vervolgknop verschijnt in deze cel.
Klik op de vervolgknop om een vervolgmenu te openen waarin de gewenste sorteervolgorde kan worden geselecteerd: selecteer thans 'Oplopend'.
Voer de query opnieuw uit en bekijk het resultaat.
Sla de query opnieuw op om de aangebrachte wijzigingen te bewaren.
Als vanzelfsprekend kunnen in één query meerdere sorteervolgordes gelijktijdig worden ingesteld.
Stel dat je voor deze query beslist dat de uitkomst van deze query een sortering op woonplaats en - binnen elke woonplaats - een sortering op naam behoeft.
De sorteervolgorde in een query wordt door Access namelijk van links naar rechts uitgevoerd: eerst op het meest linkse veld in het ontwerpraster, dan op (elk) volgend.
Om dit op te lossen kan je:
We kiezen in dit voorbeeld voor deze tweede oplossing.
Om de query 'Werkneemsters naar datum indiensttreding' in zijn oorspronkelijke vorm te bewaren en de gewijzigde query uit de voorgaande paragraaf eveneens te bewaren, kan je de query best opslaan onder een andere naam.
Je gaat daartoe als volgt te werk:
In een query is een berekend veld een veld dat niet als dusdanig in de onderliggende tabel voorkomt, maar dat op basis van één of meerdere velden in de tabel wordt berekend.
Onderstel dat in de tabel onder meer twee velden voorkomen die de
naam van een werknemer beschrijven: het veld 'Familienaam' en het veld
'Voornaam'.
Onderstel verder dat in het resultaat van de query niet voor elke werknemer
eerst de achternaam (Pieters) en daarachter de voornaam (Petra) moet worden
weergegeven, zoals in het voorbeeld in één van de bovenstaande figuren. We willen
daarentegen in het resultaat van de query elke naam weergeven zoals 'P. Pieters'
in één nieuw veld (kolom) dat we bijvoorbeeld 'Volledige naam' noemen.
Om dit te realiseren moet een nieuw, zogenaamd 'berekend veld' worden gemaakt in het ontwerp van de query waarin voor elke werknemer voorkomt:
Dergelijke 'expressie' invoeren gaat als volgt:
Tik in als veldnaam Volledige naam (dit is de naam van het nieuwe berekende veld)
Tik daarachter een dubbel punt
Vervolgens moet een functie worden ingevoerd, die de beginletter van de voornaam isoleert. Dit kan met behulp van de
functie 'Left'. Opdat deze functie correct zou werken moeten twee
argumenten worden meegegeven: de naam van het veld én het aantal tekens dat
moet worden overgenomen.
Tik daartoe achter de dubbele punt Left([Voornaam];1) . Deze functie betekent het volgende: isoleer uit het
veld [Voornaam] (veldnamen moeten in functies steeds met rechte haken
omsloten worden), te beginnen van links, één karakter.
Op dit moment staat in dit veld dus de uitdrukking (expressie) Volledige naam:Left([Voornaam];1). Wanneer je de query thans uitvoert verschijnt in het resultaat uiterst rechts een kolom waarin de beginletter van de voornaam van alle werknemers wordt getoond.
Het punt en de blanco achter deze beginletter is een tekenreeks die je pas kan toevoegen na het plaatsen van de ampersand (&). Daarenboven moeten tekenreeksen tussen aanhalingstekens worden geplaatst.
Vul dus de expressie aan met & ". " (een blanco, een ampersand, een blanco, open de dubbele aanhalingstekens, een punt, een blanco, sluit de aanhalingstekens).
De expressie luidt thans: Volledige naam:Left([Voornaam];1)
& ". "
Wanneer je de query uitvoert, verschijnt in de meest rechtse kolom voor elke
werknemer de eerste letter van de voornaam, gevolgd door een punt en een
blanco.
Om ten slotte de familienaam aan de expressie toe te voegen vul je de uitdrukking aan met de veldnaam waarin de familienamen ingevoerd werden:
je plaatst deze weer tussen rechte haken
en laat deze veldnaam weer voorafgaan door een ampersand
zoals in: & [Familienaam]
De volledige expressie luidt thans:
Volledige naam:Left([Voornaam];1) & ". " & [Familienaam]
Noot: Op de volgende webpagina wordt het opstellen van expressies nader toegelicht
In de voorbeelddatabase 'PersoneelsdatabaseVoorbeeld.accdb' kan je een voorbeeld van deze query vinden.
Helpprogramma bij Microsoft Access 2010: zoek op 'Inleiding tot query's'.