Zoeken in MS Access 2010-cursus:

Actiequery's ontwerpen

1. Leerdoel

De student moet in staat zijn om zogenaamde actiequery's uit te voeren

2. Toelichting

Zoals eerder reeds werd aangegeven, worden query's niet enkel gebruikt om records in een tabel te selecteren, filteren en sorteren, maar ook om als basis te dienen voor formulieren of rapporten, en zelfs om er bepaalde acties mee uit te voeren:

We bekijken enkele van deze vele mogelijkheden.

3. Werkwijze

3.1 Interactieve query

De query's die we tot nu toe gebouwd hebben, worden meteen uitgevoerd (tonen onmiddellijk de uitkomsttabel) wanneer ze geopend worden. Indien je dus één van de criteria wil wijzigen (bijvoorbeeld een medewerkersnaam, stadsnaam, datum,...), dan moet deze aanpassing via de ontwerpweergave worden doorgevoerd.

Dat kan ook anders. Wanneer je als selectiecriterium niet een expressie, maar wel een vraag invoert - die door de gebruiker van de query moet worden beantwoord alvorens de uitkomsten worden getoond - dan worden query's veel flexibeler, want interactief.

Onderstel dat we een query willen bouwen waarin, naast de velden 'Familienaam', 'Voornaam' en 'Postnummer', ook het veld 'Plaatsnaam' is opgenomen en dat we de gebruiker zelf de gewenste postcode willen laten invoeren als criterium voor het veld 'Postnummer'.

  1. Bouw in je 'Personeelsdatabase' een nieuwe query op basis van de query 'Werknemers naar woonplaats' die we eerder aangemaakt hebben:

    1. Klik in het lint op het tabblad 'Maken' en in de groep 'Query's' op de knop 'Queryontwerp'
    2. Klik in het dialoogvenster 'Tabel weergeven' op de tab 'Query's' of op de tab 'Beide' om de eerder gemaakte query's in de keuzelijst op te nemen
    3. Klik op de query 'Werknemers naar woonplaats'
    4. Klik op de knop 'Toevoegen'
    5. Klik op de knop 'Sluiten' om het dialoogvenster van je beeldscherm te vegen

  1. Als het goed is, bevat deze query drie velden: familienaam, voornaam en postnummer.

  1. Voeg alle velden toe aan het ontwerpraster
  2. Tik in de cel 'Criterium' van het veld 'Postnummer' volgende vraagtekst in (tussen rechte haken):

    [Welk postnummer wil je selecteren?]
  3. Voer de query uit en zie wat er gebeurt:

    1. De gebruiker krijgt eerst een dialoogvenster 'Parameterwaarde opgeven' te zien

    1. Daarin moet het gewenste postnummer worden ingevoerd, bijvoorbeeld: 3000
    2. Bij het klikken op 'OK' worden enkel de werknemers die woonachtig zijn in Leuven getoond

  1. Sla de query op met bijvoorbeeld als naam 'Mijn Interactieve query'.

3.2 Berekeningsquery

Met een query kan je tevens (statistische) berekeningen uitvoeren: totalen, gemiddelde, minimum- en maximumwaarde berekenen,... En dat is niet eens zo moeilijk.

  1. Open andermaal de database 'ICT.accdb' waarmee je eerder al aan de slag bent geweest.
  2. Maak een nieuwe query op basis van de query 'Welke opleiding kost het meeste per opleidingsuur'

    Indien je niet over deze query beschikt, dan zal je deze eerst moeten bouwen zoals op deze webpagina aangegeven onder punt 6.

  1. Voeg alle velden van de query toe aan het ontwerpraster

  1. Klik in het tabblad 'Ontwerp' op de knop 'Totalen' in de groep 'Weergeven/verbergen'
  2. Daardoor wordt in het ontwerpraster een rij 'Totaal' toegevoegd waarin voor elk veld de melding 'Group By' verschijnt.

  1. Klik in de rij 'Totaal' van het veld 'Prijs per uur' op de cel met de melding 'Group by' waardoor een vervolgknop verschijnt
  2. Klik op de vervolgknop en kies in het vervolgmenu de optie 'Gem' (een afkorting van de statische grootheid 'Gemiddelde')

  1. Voer de query uit en bemerk dat:

    1. in het veld 'Programma' elk computerprogramma slechts één keer voorkomt, gesorteerd op de naam van elk programma
    2. De veldnaam 'Prijs per uur' wordt gewijzigd in 'GemVanPrijsperuur'
    3. In de cellen van deze kolom de gemiddelde uurprijs per programma wordt berekend

      Bijvoorbeeld: het programma 'MS Access' komt in de onderliggende database vier keer voor, bedoeld voor deelnemers van verschillende niveaus, met verschillende kostprijzen en verschillende duur. In de uitkomstentabel wordt voor het programma 'MS Access' de gemiddelde kostprijs per uur voor de vier opleidingen samen berekend: € 17,675

  1. Sla de query op met bijvoorbeeld als naam 'Mijn Berekeningsquery'. Je kan een voorbeeld van deze query vinden onder de naam 'Berekeningsquery' in de voorbeelddatabase 'ICTVoorbeeld.accdb'

Deze techniek laat toe om berekeningsquery's te ontwerpen waarin, afhankelijk van de behoefte van het moment, snel statistieken worden berekend aan de hand van de opties in de keuzelijst 'Group by' (som, gemiddelde, min, max, aantal, standaarddeviatie,...).

3.3 Tabelmaakquery

Een tabelmaakquery heeft de bedoeling om geselecteerde gegevens uit een bestaande tabel te kopiëren naar een (nog te maken) nieuwe tabel. Of nog: om gegevens te archiveren in een nieuwe tabel. Daartoe moet je volgende stappen doorlopen:

  1. Eerst moet je een selectiequery bouwen, die de gewenste te kopiëren gegevens selecteert. Je kan daarbij berekende velden en expressies gebruiken.
  2. Daarna moet je de selectiequery converteren (omzetten) naar een tabelmaakquery.
  3. Deze tabelmaakquery moet je dan nadien uitvoeren (net zoals een selectiequery).

Opgelet: Om het converteren van de selectiequery met succes te laten verlopen moet de beveiligingsstatus voor de database vooraf juist worden ingesteld. Access moet namelijk tijdens de conversie bepaalde macro's en modules kunnen uitvoeren. Selecteer daartoe in de eerder besproken beveiligingswaarschuwing de optie 'Deze inhoud inschakelen'.

Ook na deze conversie vereist het uitvoeren van de tabelmaakquery dat vooraf deze optie werd ingesteld.

Meer informatie over deze beveiligingssetting kan je hier vinden.

3.3.1. Een gepaste selectiequery bouwen

  1. Open andermaal de database 'ICT.accdb' waarmee je eerder al aan de slag bent geweest.
  2. Maak een nieuwe query op basis van de tabel 'Opleidingen'
  1. Voeg de velden 'Cursus', 'Programma', 'Categorie' en 'Kostprijs in €' toe.

  1. Selecteer enkel de programma's 'MS Access'
  2. Sla de query op onder de naam 'Mijn Accessprogramma's', nadat je deze bij wijze van test hebt uitgevoerd.

3.3.2. De selectiequery converteren

  1. Zorg ervoor dat de selectiequery 'Mijn Accessprogramma's' is geopend in 'Ontwerpweergave'
  2. Klik in het tabblad 'Ontwerp' en in de groep 'Querytype' op de knop 'Tabel maken'
  3. Tik in het invoerveld 'Tabelnaam' van het dialoogvenster 'Tabel maken' een gepaste naam voor de nieuwe tabel ; bijvoorbeeld 'MS Access'
  4. Klik op 'OK' wanneer je daarmee klaar bent

  1. Daardoor start de conversie

3.3.3. De tabelmaakquery uitvoeren

  1. Klik na de conversie op de knop 'Uitvoeren'

    Noot: indien je beveiligingsstatus niet vooraf correct hebt ingesteld, wordt de actiequery niet uitgevoerd. Er verschijnt in de statusbalk in dat geval een foutmelding:

Pas in dat geval de beveiligingsstatus eerst aan en klik dan opnieuw op de knop 'Uitvoeren'

  1. Volgende waarschuwing verschijnt: de vier records die door de selectiequery werden geselecteerd zullen in de nieuwe tabel 'MS Access' worden 'geplakt' (toegevoegd).

  1. Klik op 'Ja' omdat dit inderdaad de bedoeling is.
  2. De naam van de nieuwe tabel verschijnt vervolgens in het navigatiedeelvenster onder het kopje 'Tabellen'

  1. Open de nieuwe tabel (door de tabelnaam te dubbelklikken). Als de conversie en de uitvoering van actiequery goed verlopen is, worden in de tabel de vier records met als veldwaarde 'MS Access' in het veld 'Categorie' getoond.

  1. In het navigatiedeelvenster kan je je eerste actiequery 'Mijn Accessprogramma's' van je selectquery's onderscheiden omdat de naam van je tabelmaakquery wordt voorafgegaan door het icoon (voor een selectquery is dat het icoon ).

3.3.4. De tabelmaakquery opnieuw uitvoeren

  1. Wanneer je later dezelfde tabelmaakquery opnieuw uitvoert, dan komt normaliter de tabel 'MS Access' reeds voor in de database. Access zal je hierop wijzen tijdens de uitvoering van de query en je vragen om bevestiging:

  1. Klik op 'Ja' om de query inderdaad opnieuw uit te voeren

  1. Bevestig de vraag om verwijdering van de eerder aangemaakte tabel (met als naam in ons voorbeeld 'MS Access')

  1. Bevestig de vraag aangaande het toevoegen van de geselecteerde records, waardoor een geheel nieuwe tabel wordt aangemaakt met daarin de geselecteerde records.

 

3.4 Bijwerkquery

Een 'Bijwerkquery' is een type van een actiequery dat het mogelijk maakt om gegevens in de records van een onderliggende tabel permanent te wijzigen.

Aan het uitvoeren van een dergelijke query zijn altijd risico's verbonden: eens de bijwerkquery is uitgevoerd (en het eventueel misloopt omwille van een verkeerde berekening of wijziging) dan kan je de fout nooit herstellen. Je zal dan ofwel een nieuwe bijwerkquery moeten ontwerpen om de fout weer recht te zetten, ofwel alle foutief gewijzigde records manueel aanpassen in de tabel.

Noot: vergeet niet de beveiligingsstatus van de database correct in te stellen.

Onderstel dat we bij wijze van voorbeeld in de tabel 'MS Access' van de momenteel ingevoerde categorienamen ('Databasemanager' en 'Programmeertaal') de categorienaam 'Programmeertaal' wil vervangen door de categorienaam 'Programmeren'.

De te volgen procedure voor het maken van een bijwerkquery is volkomen gelijk aan deze voor het maken van een tabelmaakquery:

  1. Maak een nieuwe query aan op basis van de tabel 'MS Access', want het is in deze tabel dat de wijziging moet worden doorgevoerd
  2. Voeg in dit geval slechts 1 veld toe: 'Categorie', omdat slechts één criterium moet worden ingevoerd én omdat de wijziging in hetzelfde veld moet worden uitgevoerd
  3. Stel als criterium in 'Programmeertaal'
  4. Klik in het tabblad 'Ontwerp' in de groep 'Querytype' op de opdrachtknop 'Bijwerken'
  5. Daardoor verschijnt boven de rij 'Criterium' in het ontwerpraster een nieuwe rij 'Wijzigen in'
  6. Tik in deze rij de nieuwe veldwaarde: 'Programmeren'
  7. Klik op de knop 'Uitvoeren' , waardoor MS Access om bevestiging vraagt om (in dit voorbeeld) één record te wijzigen

  1. Klik op 'Ja' om de wijziging door te voeren
  2. Open de tabel 'MS Access' en stel vast dat voor de record, waar eerder als categorienaam de waarde 'Programmeertaal' werd ingevoerd, de veldwaarde werd gewijzigd in 'Programmeren'
  3. Sla de bijwerkquery op onder bijvoorbeeld de naam 'Mijn bijwerkquery'

3.5 Verwijderquery

Een verwijderquery doet wat de naam zelf zegt: geselecteerde records verwijderen uit een op te geven tabel.

Een voorbeeld:

Onderstel dat we uit de tabel 'MS Access' alle records wensen te verwijderen waarin voor het veld 'Kostprijs' een bedrag kleiner dan 200 werd ingevoerd.

  1. Maak op basis van de tabel 'MS Access' een nieuwe query
  2. Voeg het veld 'Kostprijs in Euro' toe aan het ontwerpraster
  3. Voer het criterium in: <200
  4. Klik op de knop 'Verwijderen' om de selectiequery om te zetten naar een verwijderquery

  1. In het ontwerpraster wordt daardoor een rij toegevoegd 'Verwijderen' met als criterium 'Waar'
  2. Voer de query uit en bevestig de vraag om uitvoering van de verwijderquery
  1. Open de tabel 'MS Access' en stel vast dat de records met een kostprijs kleiner dan € 200 inderdaad werden verwijderd.

  1. Bewaar deze verwijderquery onder de naam 'Verwijderquery'
  2. Bemerk dat in het navigatiedeelvenster je verwijderquery wordt aangeduid met het icoon .

4. Oefening

Klik hier om een reeks oefeningen aangaande actiequery's te vinden

5. Bronnen

    Helpprogramma bij Microsoft Access 2010: zoek op 'actiequery's maken '.