| PCMenu | Access Tips en trucs | Programmavoorbeelden Access |
| Tabellen en databaseontwerp | Access formulieren | Access rapporten |
| Macro, module en programmacode | Query's uit AdresMenu | |
Hebt u een vraag over Access, stel deze dan op een van de forums, bijvoorbeeld http://office.webforums.nl
In deze tekst:
|
|
Tip: klik op een afbeelding om deze te vergroten.
In deze tekst wordt het volgende begrip besproken:
Met query's kunt u selecties uit een of meerdere tabellen maken, gegevens in tabellen aanpassen, tijdelijke tabellen aanmaken en waarden berekenen om in een tabel, rapport, formulier of grafiek verwerkt te worden.
| Access kent diverse soorten query's:
Selectiequery's:
Actiequery's:
| |||||||||||||||||
| U kunt query's gemakkelijk maken en bewerken in het query-weergavevenster. U kunt tabellen toevoegen, velden naar de kolommen slepen enz. | |||||||||||||||||
| Elke query wordt in Access op de achtergrond vertaalt naar Structured Query Language (SQL). SQL is een bekende taal die ook in veel andere programmeeromgevingen bekend is. Een voorbeeld van regel in SQL is: Select Distinct Aanhef From tblNaam Where Aanhef <> "De heer"; U kunt ook direct uw query in SQL schrijven. Samenvoegquery's kunt u alleen in SQL schrijven, u kunt deze niet in het query-weergavevenster maken. |
| Als u alle tabellen hebt gedefinieerd en de relaties hebt vastgelegd, dan kunt u nu queries en formulieren maken. In de praktijk blijkt het vaak het makkelijkst te zijn wanneer u een formulier niet op basis van een tabel, maar op basis van een selectiequery maakt. U kunt met queries selecties uit meerdere tabellen maken en ook records uit de tabellen bijwerken, aanvullen of verwijderen of een nieuwe tabel maken. |
| U kunt criteria in de velden zetten en sorteren op de waarde van de velden. Bij het sorteren begint Access met de meest linkse sorteervolgorde. Voorbeeld van een Selectiequery met sortering en voorwaarden: |
| Access gaat vaak ongelukkig om met ontbrekende (Null) waarden in een veld. U kunt deze problemen omzeilen door rond de waarde de functie Nz() (non-zero) te plaatsen. Deze functie zet Null-waardes om in een lege (Empty) string ( "" ) bij tekstvelden of in de waarde 0 bij numerieke velden. Voorbeeld: Waarde = Nz(txtVeld). U kunt ook de Iif() functie gebruiken (Inmediate If), om een lege waarde om te zetten in een andere waarde: voor een tekstveld: Iif(Not IsNull(txtVeld), txtVeld, "Leeg"), voor een numeriek veld: Iif(Not IsNull(txtVeld), txtVeld, 0). Als u deze functie in een query gebruikt, gebruik dan een ; in plaats van een , als scheidingsteken. | |
| Voor Access 97 NL gebruikers: Als u de Opbouwfunctie in Access 97 gebruikt, dan gebruikt Access vaak de Nederlandse taal, bijvoorbeeld Formulier!frmNaam!txtAchternaam . Access 2000 en hoger kennen deze Nederlandstalige opdrachten echter niet en kennen alleen de Engelstalige begrippen. U kunt daarom het beste direct de begrippen in het Engels omzetten, Access 97 kan hier ook prima mee uit de voeten en u krijgt geen problemen met anderstalige versies van Access of hogere versies van Access. In dit voorbeeld wijzigt u de regel in Forms!frmNaam!txtAchternaam . |
| In Access kunt u kruistabelquery's maken. Een kruistabelquery (deels vergelijkbaar met de draaitabellen in Excel) is een interactieve tabel waarmee u snel grote hoeveelheden gegevens kunt samenvatten. U kunt de rijen en kolommen in het rapport draaien om verschillende samenvattingen van de brongegevens weer te geven. Een kruistabelquery heeft kolommen en rijen. Op de kruispunten van kolommen en rijen plaatst u de waarde: bijvoorbeeld Som, Aantal Gemiddelde. Voorbeeld: U kunt een kruistabelquery gebruiken om het aantal abonnees per woonplaats en per type lidmaatschap weer te geven. In de eerste kolom plaats u het veld Woonplaats, in de rij het type lidmaatschap. Op de kruispunten plaatst u het Aantal van dit type lidmaatschap. |
Als u deze query uitvoert dan krijgt u het volgende resultaat:
U kunt zelf door slepen met de muis in de kolomkop de kolommen verplaatsen, zodat u zelf de volgorde bepalen kunt.
Partition()
Wilt u een range (gebied) in een kruistabel verwerken, bijvoorbeeld de leeftijd met een interval van 10 jaar, dan kunt u gebruik maken van de functie Partition(). Voorbeeld: de volgende code geeft de leeftijd met een interval van 10 jaar:
Leeftijdsgroep: Partition([leeftijd];0;100;10)
U kunt dit in een Kruistabelquery bijvoorbeeld voor de Kolom gebruiken.
Het resultaat van deze kruistabelquery ziet er als volgt uit:
Draaitabellen in Access of Excel
In Access 97 en 2000 kunt u meerdere rijkoppen (de kop boven de de eerste kolommen), maar slechts één kolomkop (de kop boven de kolommen met de berekende waarden) maken. Wilt u complexere kruistabelquery's maken, bijvoorbeeld met meerdere kolomkoppen, exporteer dan de brontabel naar Excel en maak gebruik van de Draaitabellen in Excel. De Draaitabel-functie van Excel is veel uitgebreider dan de kruistabel-query functie in Access 97 en 2000. In Access 2002 en hoger kunt u wel draaitabellen maken, zonder dat u hiervoor Excel nodig heeft. Als u de database terugconverteert naar Access 2000 formaat, verdwijnen de draaitabellen.
In Access 2002 en hoger kunt u ook in Access zelf draaitabellen maken.