Databank van een restaurant Download op Twee tabellen: Klanten: Alle klanten die minstens één keer het restaurant bezocht hebben. Hun voornaam, naam en geboortedatum wordt opgeslagen, bovendien heeft iedere klant een klantennummer, dit is de primaire sleutel. Reservaties: Hier worden alle reservaties opgeslagen: dag, begintijd, eindtijd en klantnummer. Iedere reservatie heeft ook een ID als primaire sleutel.
Wat is een query? Een query is een aanvraag voor informatie uit een databank. In een relationele databank zoals MSAccess wordt het resultaat van een query uitgedrukt in een tabel. Een query maken is dan een nieuwe tabel opbouwen aan de hand van ingevulde informatie in bestaande tabellen.
Wat is een query? Een query kan uitgedrukt worden in een query taal. Meest gebruikte: SQL (structured query language). Access heeft eigen variant. Access biedt ons een GUI (grafische user interface) om queries te maken. Deze zullen wij nu gebruiken.
Wat is een query? In access kunnen wij een query een naam geven en opslaan, en dan bekijken en beschouwen als een soort tabel (een view). De informatie blijft alleen in de echte tabellen opgeslagen. Wijzigen in een query-tabel is eigenlijk wijzigen in echte tabellen.
Een query maken Eerst specificeren welke tabel(len) je gebruikt. Velden kiezen. (*=alle velden van een tabel.) Het raster toont alle velden. Field = naam van het veld. Table = naam van de tabel Sort = sorteren op dit veld (oplopend / aflopend) Show = veld tonen of niet Criteria= zie later
Opdracht 1 Maak een query die alle velden van de tabel “klanten” toont (gebruik hiervoor het sterretje). Sorteer de tabel op naam, maar zorg dat de kolom naam maar één keer zichtbaar is. Sla op onder de naam “queryKlanten” en open de query-tabel.
Nieuwe velden definiëren Men kan een uitdrukking invullen in de rij “Field” van een nieuwe kolom in het veldenraster. Gelijkaardig aan de formules in Excel zoals we al geleerd hebben Functies en operatoren niet altijd hetzelfde. Toegepast op andere velden ipv andere cellen De uitdrukking wordt voorafgegaan door een naam voor het nieuwe veld en een dubbele punt. De gebruikte velden staan tussen vierkante haakjes. Deze worden echter automatisch door Access ingevuld als je ze niet invult.
Nieuwe velden definiëren Begin een nieuwe query met de tabel “klanten”. Voeg het volgende veld toe aan de query: VolledigeNaam: [Voornaam] & " " & [Naam] Sla deze query op onder de naam “querySenioren” en open hem.
Opdracht 2 Voeg een veld “Leeftijd” toe aan de query “querySenioren”. Gebruik de functies en Now() (de huidige datum), de mogelijkheid om datums van elkaar af te trekken en Format(datum, “yy”) (om de twee laatste cijfers van het jaar uit een datum te krijgen).
Oplossing Leeftijd: Format(Now() – [Geboortedatum], “yy”)
Criteria In het vak “criteria” kunnen we nu voorwaarden invullen in dezelfde syntax als we vorige week gezien hebben bij “validation rule”. De query toont dan alleen de records die aan alle criteria voldoen.
Opdracht 3 Zorg dat alleen de klanten vanaf 60 jaar worden weergegeven in de query “querySeniors”.
Oplossing >= 60
Relationships Wanneer we meer dan één tabel in een databank aanmaken, is dat meestal omdat er een verband is tussen deze tabellen. Alle tabellen in onze databank handelen over één en hetzelfde restaurant. Klanten maken reservaties. Daarom moeten we bij elke reservatie een klantennummer opgeven. Dit klantennummer is eigenlijk een verwijzing naar de primary key van “klanten”.
Relationships Leg de relationship vast tussen onze twee tabellen via Tools > Relationships Enforce Referential Integrity = zorgt ervoor dat Access controleert dat voor iedere afspraak een geldige klantnummer wordt opgegeven.
Query met twee tabellen Maak een nieuwe query aan, waarbij je zowel de tabel klanten als reservaties toevoegt. Voeg de velden Dag, BeginTijd en EindTijd van de reservaties toe. Voeg ook de rijen naam en voornaam van de tabel klanten toe. Sluit de tabel en sla op als “queryReservaties”. Bekijk nu de query-tabel.
Opdracht 4 De uitbater van het restaurant wilt een gratis champagnefles geven aan iedere klant die komt eten voor z’n verjaardag. Voeg een veld toe “verjaardag” dat “HAPPY BIRTHDAY” zegt wanneer de klant verjaart op deze reservatie. Opmerkingen: De If functies in Access heet “iif” (maar werkt voor de rest analoog aan excel). Gebruik format (datum, “ddmm”) om dag en maand uit een datum te halen.
Oplossing verjaardag: IIf(Format([Dag];"ddmm")= Format([Geboortedatum];"ddmm"); "HAPPY BIRTHDAY";"")
Voor wie klaar is… Maak een nieuwe databank van artikels en bestellingen. Bewaar van ieder artikel een nummer naam en een prijs. Bewaar van iedere bestelling een nummer, een artikelnummer en een aantal stuks. Vul de tabellen in met een tiental voorbeelden. Maak een query die ook de totale prijs van iedere bestelling toont.