Oplossing oefeningen functieprocedures reeks 2
Oefening 1
Maak een query met een berekend veld 'x:AantalDagenTotVerjaardag([geboortedatum])
Public Function AantalDagenTotVerjaardag(geb As Date)
As Integer
Dim dtmVerjaardag As Date
dtmVerjaardag = DateSerial(Year(Date), Month(geb), Day(geb))
If dtmVerjaardag < Date Then
dtmVerjaardag = DateSerial(Year(Now()) + 1,
Month(geb), Day(geb))
End If
AantalDagenTotVerjaardag = Int(dtmVerjaardag - Date)
End Function
Oefening 2
Maak een query met een berekend veld x: [naam]+" is "+CStr(leeftijd([geboortedatum]))+" jaar.". Je gebruikt hierin dus de reeds gemaakte functie 'Leeftijd'.
Oefening 3
Maak een query met 2 berekende velden:
De functie Jarig zelf ziet er zo uit:
Function Jarig(dtm As Date) As Boolean
If AantalDagenTotVerjaardag(dtm) = 0 Then
Jarig = True
Else
Jarig = False
End If
End Function
Als tweede berekend veld zou je ook y:
aantaldagentotverjaardag([geboortedatum]) met als
criteriumwaarde nul kunnen gebruiken:
Oefening 4
Maak een query met een berekend veld z: aantaldagentotverjaardag([geboortedatum]) en
als criteriumwaarde Between volgendemaandag(Date()) - Date() And volgendemaandag(Date()) -Date() + 7.
Je berekent dus hoeveel dagen je nog van het begin van de volgende week verwijderd bent en vervolgens voeg je daar 7 aan toe om het aantal dagen van vandaag tot het einde van de volgende week te berekenen. De gezochte verjaardagen moeten tussen die 2 vallen. Het begin van de volgende week wordt gezocht met de functie VolgendeMaandag:
Public Function VolgendeMaandag(dtm As Date)
Do
dtm = dtm + 1
Loop Until WeekDay(dtm, 2) = 1
VolgendeMaandag = dtm
End Function
Oefening 5
Maak onderstaande query op basis van tblLeerlingen:
| Veld | x:leeftijd([Geboortedatum]) | Naam | y:sorteervolgorde([Naam]) |
| Tabel | |||
| Sorteervolgorde | Oplopend | Oplopend | |
| Weergeven | Ja | Ja | Neen |
| Criteria | Between 15 And 17 |