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

terug


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'.

terug

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:

terug

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

terug

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    

terug