Ik weet niet precies waarvoor je de query nodig hebt. Als je de cumulatieven in een rapport wilt laten zien, kun je als volgt handelen:
Plaats een niet-afhankelijk tekstvak in de detail sectie (waarin ook het bedrag voor die maand staat)
Geef dit tekstvak als besturingelementbron: het tekstvak met de waarde van die maand
Stel de eigenschap van het tekstvak ‘lopend totaal’(running sum, geloof ik), in op: “Over allesâ€Â
Puur in een query wordt het lastiger. Zoals ik hem heb opgelost:
1. Roep binnen de query een functie op met als argument: de waarde van de maand
2. Die functie doet het rekenwerk.
De werking van de functie: je loopt een recordset door, en laat een bepaalde waarde,d ie de uitkomst wordt van de functie, steeds ophogen met de inhoud van een veld. De truc: deze recordset varieert steeds. Het is namelijk een recordset met als basis: een SQL-statement. En die laat je steeds variëren, afhankelijk van de waarde die je bij het oproepen van de functie hebt doorgegeven.
De functie:
Public Function pfBereken(bytMaand As Byte) As Long
Dim strSQL As String
Dim lngTotaal As Long
Dim rst As Recordset
strSQL = “SELECT tblBedragen.bytMaand, tblBedragen.lngBedrag ”
strSQL = strSQL & “FROM tblBedragen ”
strSQL = strSQL & “WHERE (tblBedragen.bytMaand) <= ” & bytMaand
Set rst = CurrentDb.OpenRecordset(strSQL)
lngTotaal = 0
While rst.EOF = False
lngTotaal = lngTotaal + rst.Fields("")
rst.MoveNext
Wend
pfBereken = lngTotaal
End Function
Dit is de gedachtengang…. en nu nog aanpassen aan je eigen tabel!