Home » Cursus Microsoft Access » Query’s gebruiken in Microsoft Access (6/10)

Laatste update:

Query’s gebruiken in Microsoft Access (6/10)

Wat is een query? Hoe maak je een query? Hoe gebruik je de querywizard? Hoe reken je met een query? Wat is een parameterquery?

We hebben tot nu in onze database tabellen gemaakt en die met elkaar verbonden in relaties. Tijd om nu eens effectief iets te doen met onze database: we gaan erin zoeken. Hoe? Met queries.

Wat is een query?

Query betekent zoveel als vraag of zoekopdracht. Je gaat Microsoft Access dus een vraag stellen, en hij (of is het zij?) gaat op zoek in de database naar het antwoord.

Met die resultaten kan je dan aan de slag, bijvoorbeeld als input voor een rapport. Je kan met een query ook verschillende tabellen combineren om zo precies weer te geven wat jij wil zien.

Dat opzoeken, filteren, combineren, kortom alles wat query’s voor je in een oogwenk doen, daarin schuilt de échte kracht van databases.

We beginnen hieronder met een eenvoudige query te maken met de query wizard, en daarna maken we het wat complexer.

Een query maken

Een query kan je stap voor stap maken met de zogenaamde querywizard of je kan de meer geavanceerde optie queryontwerp gebruiken. Ik begin hieronder natuurlijk met de wizard.

De twee opties vind je op de tab maken in de groep query’s.

Op de tab maken zie je hier de 2 query-opties: wizard query & queryontwerp

Een query maken met de querywizard

Zodra je op de knop wizard query klikt, opent een venster waarin je een keuze moet maken uit enkele mogelijke types query’s. Anders gezegd: wat voor vraag wil je beantwoord zien?

In de querywizard moet je eerst kiezen wat voor query je wil maken

Je hebt deze opties:

  • Selectiequery: het resultaat van de query toont een bepaald deel van je data, bijvoorbeeld alle boeken die op zolder liggen
  • Kruistabelquery: het resultaat van de query toont een kruistabel, bijvoorbeeld het aantal boeken per locatie
  • Dubbele records: het resultaat van de query toont de records die dubbel voorkomen.
  • Niet-gerelateerde records: het resultaat van de query toont records die geen gerelateerde records hebben in een andere tabel. Dit type zou je bijvoorbeeld kunnen gebruiken om te ontdekken voor welke boeken geen locatie werd ingesteld.

Voor nu kies ik een selectiequery.

Vervolgens moet je de tabel kiezen en de velden die je wil opnemen in je query. De tabel selecteer je bovenaan, en de velden daaronder. Selecteren doe je door velden toe te voegen aan het vakje geselecteerde velden met de > en >>-knoppen.

Merk op dat je velden uit meerdere tabellen kan combineren.

Ik wil bijvoorbeeld mooi bij elkaar zien welke boeken ik heb, waar ze staan, waarover ze gaan en wie de auteur is. Ik selecteer de verschillende velden uit meerdere tabellen. Het voordeel is dus nu dat ik mijn selectie zo kan maken dat ik niet langer de ID’s zie, maar wel de omschrijvingen die bij de ID’s horen. Het resultaat van mijn query zal dus veel gemakkelijker te begrijpen zijn dan wanneer ik de data in de afzonderlijke tabellen bekijk.

Na een klik op volgende moet je kiezen of je detailquery wil maken of een totalenquery.

Maak een keuze uit 2 types query’s. De uitleg volgt hieronder.

Wat het verschil is tussen die 2 leg ik straks uit, maar nu kies ik voor details en klik ik gewoon door.

Je geeft de query tot slot een naam en klikt dan op voltooien. Je ziet nu het resultaat van je query.

Dit is het resultaat van de query.

Zie je hoe handig dit is? Het systeem is uit verschillende tabellen data gaan opzoeken. Ik heb nu een veel gemakkelijker te hanteren overzicht van mijn boeken dan daarstraks in de afzonderlijke tabellen.

Vanaf nu staat je query ook in het navigatiedeelvenster onder query’s. Je kan deze opnieuw laten lopen zo vaak je wil, waarbij je steeds gebruik maakt van de meest actuele data door te dubbelklikken op de querynaam. Zorg er dan wel eerst voor dat de query niet al in een venster geopend staat.

In het filmpje hieronder heb ik de hele procedure eens na elkaar uitgevoerd. Dus dit kan je bekijken als je daarnet niet goed kon volgen.

Het verschil tussen een detailquery & een totalenquery

Daarnet hebben we zonder veel aandacht gekozen voor een detailquery. Hieronder leg ik nog even het verschil uit met een totalenquery.

Een detailquery is de standaard: je ziet alle records afzonderlijk. Bij een totalenquery daarentegen worden velden samengeteld. Als je bijvoorbeeld in een tabel vogelwaarnemingen zou weergeven, dan zou je met een totalenquery het totaal aantal keer dat een roodborstje of een merel gesignaleerd werd kunnen weergeven, terwijl een detailquery de afzonderlijke waarnemingen weergeeft.

Bekijk onderstaande voorbeeld eens. Ik gebruik nu even een andere database om goed de werking van zo’n totalenquery te laten zien. Het is een database met tabellen voor o.a. producten, bestellingen en leveranciers.

Bedoeling is nu dat ik de totale verkoopprijs opzoek per leverancier. Ik moet een totalenquery gebruiken om dit getal uit de verschillende tabellen te halen.

Ik doorloop nu opnieuw de querywizard en kies voor de totalenquery. Dat kan natuurlijk alleen maar omdat een van onze velden een numeriek veld is, in ons voorbeeld de verkoopprijs.

Bij de opties voor totalen bepaal je wat het programma moet berekenen: wil je de som van alle verkopen per leverancier, wil je de gemiddelde verkoopprijs, wil je het minimum of het maximum?

Welke berekening wil je maken?

Ik kies nu voor de som en doorloop verder de wizard. Het resultaat geeft heel mooi de verkopen per leverancier weer.

Hier zie je het resultaat van de query die de verkopen per leverancier berekent

Een query maken in de weergave queryontwerp

In de praktijk gebruik ik echter vaak niét de wizard, maar wel de optie queryontwerp. De opties zijn daar nog veel uitgebreider.

Klik op de tab maken op de knop queryontwerp in de groep query’s.

Rechts zie je nu alles wat je aan de query kan toevoegen: tabellen, koppelingen en query’s.

Selecteer rechts bij tabellen toevoegen de items die je aan je query wil toevoegen.

Door te dubbelklikken in dat venster voeg je iets toe aan het centrum van het scherm. Wanneer we bijvoorbeeld op boek dubbelklikken verschijnt de boekentabel centraal.

Helemaal onderaan het scherm zie je een soort van tabel of raster. Wat je nu moet doen is alle velden die je in de query wil opnemen, slepen naar een kolom in die tabel. Dus gewoon slepen van boven naar beneden, of ook weer dubbelklikken

Merk dat zodra je sleept de eerste rij (veld) en de tweede rij (tabel) worden ingevuld.

Voor nu houd ik het simpel en voeg ik enkel velden toe die samen in één tabel zitten.

We gaan voor nu deze query eens een keertje opslaan en ons nog niet druk maken over de overige rijen in het raster.

Opslaan doe je snel met de toetsencombinatie ctrl s. Geef de query een naam. Klaar? Dan staat deze bij de query’s in het navigatiedeelvenster.

Wanneer je erop dubbelklikt, zie je het resultaat.

Hieronder doe ik het eens allemaal voor: dus vanaf het toevoegen van de tabel tot het opslaan.

Voeg een tabel toe, kies de velden en sla de query dan op.

Een bestaande query bewerken

Wanneer je een query gemaakt hebt, dan wil je die misschien achteraf bewerken.

Dat kan eenvoudig door de query te openen via het navigatiedeelvenster.

Je ziet nu bovenaan dat er naast de gegevensbladweergave ook een ontwerpweergave is. Wat betekenen deze weergaven?

  • Gegevensbladweergave: hier zie je het resultaat van je query
  • Ontwerpweergave: hiermee kom je opnieuw in de bewerkweergave. Deze heb je dus nodig om je query aan te passen.

Dezelfde optie zie je helemaal rechts onderaan op je scherm. Je ziet dat er daar zelfs nog een derde weergave is, de SQL-weergave.

  • SQL-weergave: hier zie je je query vertaald in SQL, dat is een computertaal waarmee je selecties uit databases kan maken. Dat kan je gebruiken in MS Access, maar ook andere databasesystemen (als je webhosting hebt, dan heb je waarschijnlijk ook toegang tot een (My)SQL-database.
Wisselen tussen de gegevensbladweergave, de SQL-weergave & de ontwerpweergave voor query’s

Wil je sneller werken? Klik dan met de rechtermuisknop op de query in het navigatiedeelvenster en selecteer ontwerpweergave.

Een query maken met meerdere tabellen

Wat als je een query wil maken met data uit meerdere tabellen? Want dat wil je natuurlijk doen. Je wil alle zoveel mogelijk data combineren.

Eigenlijk is dat niet moeilijker dan met een tabel. Het kan zowel met de wizard als met queryontwerp. Ik leg het nu gewoon uit met queryontwerp.

Wat je gewoon moet doen is wanneer je de tabellen selecteert meerdere tabellen toevoegen. Ze verschijnen dan gewoon centraal op je scherm, met de relaties ertussen.

Net zoals daarstraks sleep je de velden van de tabel naar beneden naar het raster. Je kan zoals je weet ook gewoon dubbelklikken.

De rest van de procedure is 100% gelijk aan wat je eerder deed. Je kan deze query dus gewoon laten lopen.

Hieronder maak ik een query die gebruik maakt van de locatietabel, de boekentabel en de auteurtabel. Het is belangrijk dat je ook de verbindingstabel BoekAuteur toevoegt omdat die zorgt voor de relaties tussen de boeken en de auteurs.

We maken een query op basis van 4 tabellen.

Criteria en logische operatoren gebruiken in query’s

Een query is eigenlijk iets vragen aan Access. Tot nu waren die vragen eerder simpel. Hierboven zijn we weinig selectief: we vragen alle records in een veld te tonen.

Maar wat nu als je meer specifieke vragen stelt? Je wil bijvoorbeeld de boeken tonen op een bepaalde locatie? Of de boeken over 1 onderwerp?

Dan moet je een query opstellen die gebruik maakt van criteria. Dat klinkt moeilijker dan het eigenlijk is.

Kijk maar eens naar het queryraster in de ontwerpweergave.

Onder locatie is nu het criterium “zolder” ingegeven.

Op de rij criteria kan je per veld typen welke records met welke waarden je in je selectie wil opnemen. In het voorbeeld hierboven selecteer ik alleen de boeken die als locatie Zolder hebben meegekregen.

Merk op dat je de aanhalingsteken rond het item (“Zolder”) niet zelf moet typen, die worden toegevoegd zodra je op enter drukt.

En nog een tip, bij numerieke waarden zou je ook operatoren kunnen gebruiken. Bijoorbeeld >60, of <20000.

Als je nu op uitvoeren drukt bij queryontwerp of dubbelklikt op je query in het navigatiedeelvenster, zie je dat enkel die boeken op zolder getoond worden.

Je kan je query ook strenger maken door meerdere criteria toe te voegen.

Deze query heeft 2 voorwaarden. Kijk bij “criteria”.

Hierboven heb ik bijvoorbeeld 2 voorwaarden: het boek moet in de woonkamer staan en de auteur moet uit België komen.

De criteria zijn met een EN met elkaar verbonden. Dat betekent dat alleen die gevallen die aan de 2 voorwaarden voldoen (“woonkamer” EN “België”) geselecteerd worden.

Wat als je een OF-selectie wil maken? Je wil bijvoorbeeld die boeken vinden die ofwel in de woonkamer liggen OF door een Belgische auteur geschreven zijn.

Dan moet je je criteria op verschillende rijen ingeven. Je ziet voor de rij onder criteria een “of:” staan die dat duidelijk maakt.

Deze query selecteert dus de boeken die ofwel in de woonkamer liggen ofwel door een Belgische auteur geschreven zijn.

Sorteren en (niet) weergeven

In de queryontwerpweergave schieten er nog 2 rijtjes over:

  • sorteervolgorde
  • weergeven

Laat ons eerst eens naar de sorterenrij kijken. Wanneer je erop klikt, zie je dat je kan kiezen tussen oplopend, aflopend of geen.

Wanneer je bijv. “oplopend” kiest, zullen de records voor een tekstveld alfabetisch gerangschikt worden.

Ik wil de locaties oplopend sorteren (d.i. alfabetisch)

Het resultaat ziet er nu zo uit:

De resultaten zijn nu alfabetisch gesorteerd.

In queryontwerp heb je misschien gezien dat het vakje weergeven aangevinkt stond. Dat betekent dat de velden getoond worden in het resultaat.

Waarom zou je een veld willen opnemen in een query maar het dan niet tonen? Wel, daar is een goede reden voor. Stel dat je bijvoorbeeld alle boeken op de zolder wil tonen. Dan is het logisch dat die allemaal zolder zullen tonen in het veld locatie. Je kan er dan voor kiezen om de locatie niet te tonen. Je gebruikt het veld dan enkel om de selectie te maken, niet om te tonen in het resultaat.

Het vinke bij weergeven is nu niet aangevinkt.

Dit geeft dit resultaat.

Er wordt nu enkel gefilterd op de “zolder”, maar “zolder” zelf zie je niet langer.

Enkel top X tonen

Soms wil je niet alle resultaten zien, maar enkel de 5 beste of 10 beste resultaten.

Dat doe je eenvoudig in de ontwerpweergave in de groep query’s instellen van de tab ontwerp. Bij resultaat kan je daar een waarde kiezen.

Om dat te demonstreren gebruik ik nog een keertje mijn database met bestellingen & producten.

Ik maak een heel eenvoudige query met alleen deze velden, aflopend gesorteerd op de verkoopprijs:

Een eenvoudige query, gemaakt zonder de wizard

Wanneer ik die laat lopen zie ik dit resultaat.

Als ik nu bij resultaat in de groep query’s instellen (in de ontwerpweergave op de tab queryontwerp) kies voor “5”, dan zie ik enkel de top 5.

In het veld resultaat kan je ook zelf typen in plaats van een waarde te selecteren. Wil je enkel de top 3 zien bijvoorbeeld? Typ dan gewoon een 3.

Als je de query nu nog een keer laat lopen zie je het geselecteerde aantal resultaten.

Rekenen in een query

Tot nu gebruikten we in de query’s telkens de gewone velden, de velden die in de tabel aanwezig zijn.

Je kan in een query echter ook een nieuwe kolom (veld) tonen dat gebruik gemaakt van de waarden in de andere velden. Je kan dus met andere woorden rekenen in de query.

Ik neem je daarvoor even terug mee naar mijn eenvoudige database met de verkopen. Ik voeg nu een extra kolom in, waarin ik bijhoud hoeveel winst een product oplevert.

Ik wil dus gewoon van de verkoopprijs de aankoopprijs aftrekken.

Hoe doe ik dat?

Ik maak een nieuwe query met queryontwerp (dus bij maken).

Ik voeg eerst alle tabellen toe en kies dan enkele velden uit die tabellen. (door gewoon te dubbelklikken)

Ik klik nu met de rechtermuisknop in de kolom rechts naast de kolom verkoopprijs en kies voor opbouwen.

Bovenaan moeten we nu de berekening ingeven, gebruikmakend van de velden die onderaan worden weergegeven. Klik op het plusteken om een lijstje te zien van je tabellen en query’s. Blijf doorklikken tot je het veld ziet dat je nodig hebt. Als je dubbelklikt op een veld voeg je het toe aan de expressie.

Ik gebruik nu een -teken om een verschil te maken. Kijk bij operatoren om alle mogelijkheden te zien.

Klik op OK en je query staat nu in het raster.

Wat je nu nog kan doen is op de veldrij de benaming Expr1: veranderen in iets anders. Wat je hier typt, wordt immers de titel van de kolom.

Laat de query nu maar eens lopen om het resultaat te zien. (uitvoeren)

Je ziet dat alles mooi berekend wordt. Dubbelklik op de scheiding tussen 2 kolommen om de kolommen wat breder te maken als het niet goed wordt weergegeven.

Nog een voorbeeld: rekenen met query’s & totalen berekenen

Dat voorbeeld hierboven maakt duidelijk hoe je kan rekenen met query’s. Hieronder nog een voorbeeldje. Stel dat ik nu per bestelling wil weten hoeveel mijn inkooppriijs bedraagt en wat het factuurbedrag is.

Dan maak ik een eenvoudige query waarin ik de nodige tabellen en velden toevoeg.

Met opbouwen (rechtermuisknop op de kolom) bereken ik de totale aankoopprijs en ook de totale verkoopprijs.

Met opbouwen kan je een berekening maken.

Het resultaat zie je hieronder.

Het voordeel is nu dat ik deze query als bron kan gebruiken voor een nieuwe query. Ik kan nu bijvoorbeeld deze query gebruiken om per leverancier de totale aankoopprijs weer te geven van mijn bestellingen en de totale omzet (de totale verkoopprijs).

Je kan niet alleen tabellen toevoegen aan het venster waarmee je query’s maakt, maar ook query’s zelf

Ik doe dat eenvoudig door niet alleen de tabellen toe te voegen aan het queryvenster, maar ook de vorige query.

Het is nu de bedoeling dat ik de totalen weergeef (dus de som) per leverancier van de totale verkoopprijzen en aankoopprijzen. Dat doe je door op een kolom naar keuze met de rechtermuisknop te klikken en dan de totalen aan te klikken. Er verschijnt nu een rij Totaal waarop je kan specifiëren of er gegroepeerd moet worden op die rij (in ons voorbeeld willen we groeperen op de leveranciernaam) of welke berekening er moet uitgevoerd worden voor de groep (ins ons voorbeeld de som van de verkoopprijzen en de som van de aankoopprijzen).

Hier zie je dat de totaalrij is toegevoegd. We groeperen op de leverancier en nemen dan de som van de verkoopprijzen en de som van de aankoopprijzen.

Wanneer we deze query laten lopen? bekomen we onderstaand resultaat.

Parameterquery

Een parameterquery gebruik je wanneer je verschillende keren eenzelfde query wil uitvoeren, maar telkens met als criterium een andere waarde. Op het moment dat je de query uitvoert, moet je aan Microsoft Access duidelijk maken wat je precies wil doen.

Stel dat ik bijvoorbeeld een query wil maken met info over bestellingen (datum, id, productnaam, aantal, etc.). Het is nu de bedoeling dat de gebruiker ingeeft voor welk productID hij of zij de bestellingen wil zien.

Dat doe je door in queryontwerp in de kolom voor het productID bij criteria tussen vierkante haakjes een tekst te typen, bijvoorbeeld [welk productID?]

Typ de tekst tussen vierkante haakjes op de rij Criteria.

Als je de query nu laat lopen opent er een kadertje waarin je wordt gevraagd voor welk ID je de data wil zien. Je filtert dan op dat ID.

ALS-expressie in een query gebruiken

Ken je de ALS-functies uit Microsoft Excel nog? In Access werken ze natuurlijk analoog.

Dat betekent dat je in een query een nieuw veld kunt maken waarin je een ALS-functie gebruikt.

Stel dat ik bijvoorbeeld een query maak waarbij ik het aantal keer tel dat een product in het totaal is verkocht.

Het queryontwerp staat hieronder en het resultaat daaronder. Dat zou allemaal niks nieuws mogen zijn want dat hebben we hierboven ook al een paar keer gedaan.

Deze query telt het aantal verkochte items per product.
Dit is het resultaat.

Stel dat ik producten met meer dan 3 verkopen het label “topproduct” wil geven. Andere producten zijn “gewone producten”. Ik wil dit veld de kolomkop “status” meegeven.

Ik moet nu een nieuwe query maken die gebaseerd is op de query hierboven en daar dan met een ALS-functie een nieuw veld maken. Omdat zulke ALS-functies snel erg lang worden, is het onhandig om de functie te typen in het kleine veldje dat Access daarvoor voorziet.

Beter is daarom om in queryontwerp k met de rechtermuisknop op de eerste lege kolom te klikken en te kiezen voor in- en uitzoomen.

Nu opent een venstertje waarin je je formule (of in Access-taal: expressie) kan typen. Het voordeel van dit venstertje is dat je kan inzoomen, anders kan je vaak je expressie niet goed lezen. Inzoomen betekent hier echter dat je bij lettertype het lettertype wat groter kan zetten.

Bij lettertype heb ik de tekstgrootte wat vergroot.

Ik typ hier nu mijn expressie. Ik ga deze niet helemaal uitleggen, daarvoor moet je maar eens gaan kijken bij de uitleg voor Excel. De redenering is dezelfde. Het is wel een beetje gek dat je ipv. IF hier IIF moet typen.

In mensentaal: als het aantal verkopen groter is dan 3, dan staat er “topproduct”, in alle andere gevallen staat er “gewoon product”.

Ik vervang nu in het raster opnieuw Expr1: door iets met meer betekenis, bijvoorbeeld “status”. Snap je nu waarom dat inzoomenvestertje zo nuttig is?

Eenmaal uitgevoerd, zie je dat onze query perfect weergeeft wat we willen. De kolom heet status en de ALS-functie doet zijn job.

Totaalrij toevoegen in een query

Wanneer je je query opent in de gegevensbladweergave kan je een totaalrij toevoegen. Dat doe je in de groep records op de tab start.

Ik klik op totalen. De totaalrij verschijnt nu onder de nieuw-record-rij.

Vind je het vreemd dat deze rij nu leeg is? Geen nood, je moet in het veld op de totaalrij waar je een totaal wil tonen nog selecteren wat voor een totaal je wil.

Ik klik nu dus in de kolom met het aantal verkopen op de totaalrij, en kies daar voor SOM. Merk op dat je niet alleen de som kan tonen, maar ook het maximum, minimum, gemiddelde, de standaardafwijking etc.

Ik wil graag de SOM zien van de aantallen.

Als je een tekstveld hebt, zijn je opties beperkter. Je kiest dan voor GEEN, of AANTAL.

In het volgende deel bouwen we nog verder op de query’s. We introduceren nieuwe types query’s, namelijk de actiequery’s.

Office-toepassingen

Cursus MS Excel

Cursus MS Word

Cursus MS PowerPoint

Cursus MS Outlook

Cursus MS Access

Grafische programma's

Basiscursus Adobe Photoshop

Basiscursus GIMP

Basiscursus Adobe Lightroom

Mobiel

Cursus Android smartphones

Bedrijfstoepassingen

Cursus Google Analytics

Cursus Google Ads

Cursus SEO

Cursus Wordpress