Ik ben bezig met het bouwen van een applicatie in Access 2003 om presentie te registreren. Een onderdeel hier van is de ziekmelding. Omdat alleen de eerste dag van de ziekte geregistreerd wordt (en dus niet de duur en het moment van beterschap) moet ik dat zelf uitzoeken. De zieke is dus afwezig tot de eerste melding van aanwezigheid. Als Jan op zich op maandag ziek meldt moet de applicatie weten dat hij (wanneer hij zich niet meldt) dinsdag ook nog ziek is. Op zich is dit niet zo'n probleem; gewoon een tabelletje met zieken bijhouden. Nu wil ik dat deze tabel dagelijks bijgewerkt wordt door de nieuwe zieken toe te voegen (en de mensen die weer aanwezig zijn te verwijderen). Hier heb ik het volgende stukje code voor gebrouwen.
De eerste keer (als te tabel tbl_geoorloofd_afwezig nog leeg is) werkt het prima. De volgende keren krijg ik de melding dat de te schrijven records al bestaan. Wat blijkt nou: Het loopje
wordt maar 1 keer uitgevoerd; de eerste keer. Dat wil dus zeggen dat de variabele "bestaat" dus, op de eerste keer na, altijd 0 is en er dus altijd een record toe gevoegd moet worden.
Wat doe ik fout? Waarom wordt het loopje maar 1 keer uitgevoerd? En allerbelangrijkste is: Wat doe ik er aan?
VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| Dim DB As Database Dim RS1 As Recordset Dim RS2 As Recordset Dim RS3 As Recordset Dim Bestaat As Integer Set DB = CurrentDb Set RS1 = DB.OpenRecordset("dbo_ar_absence_reports") Set RS2 = DB.OpenRecordset("tbl_geoorloofd_afwezig") Set RS3 = DB.OpenRecordset("qry_rooster_stap2") Bestaat = 0 Do Until RS1.EOF If RS1("REPORT_DATE").Value = RS3("fld_lesdatum").Value Then Do Until RS2.EOF If RS2("fld_student_id").Value = RS1("STUDENTID").Value Then Bestaat = 1 End If RS2.MoveNext Loop If Bestaat = 0 Then RS2.AddNew RS2("fld_student_id").Value = RS1("STUDENTID").Value RS2.Update End If End If Bestaat = 0 RS1.MoveNext Loop RS1.Close RS2.Close RS3.Close DB.Close Set RS1 = Nothing Set RS2 = Nothing Set RS3 = Nothing Set DB = Nothing MsgBox "Klaar!", vbInformation, "Info" |
De eerste keer (als te tabel tbl_geoorloofd_afwezig nog leeg is) werkt het prima. De volgende keren krijg ik de melding dat de te schrijven records al bestaan. Wat blijkt nou: Het loopje
VBScript:
1
2
3
4
5
6
| Do Until RS2.EOF If RS2("fld_student_id").Value = RS1("STUDENTID").Value Then Bestaat = 1 End If RS2.MoveNext Loop |
wordt maar 1 keer uitgevoerd; de eerste keer. Dat wil dus zeggen dat de variabele "bestaat" dus, op de eerste keer na, altijd 0 is en er dus altijd een record toe gevoegd moet worden.
Wat doe ik fout? Waarom wordt het loopje maar 1 keer uitgevoerd? En allerbelangrijkste is: Wat doe ik er aan?