Lay-out

Code

Private Sub Rek_nr_BeforeUpdate(Cancel As Integer)
Dim mnummer As String, mteken As String * 1
Dim mteller As Integer
Dim mdeeltal, mcontrolegetal, mrest, mquotient

'controle rekeningnummer
If Not IsNull(Rek_nr) Then
'cijfers groeperen
mnummer = ""
For mteller = 1 To Len(Rek_nr)
mteken = Mid(Rek_nr, mteller, 1)
If mteken >= "0" And mteken <= "9" Then
mnummer = mnummer & mteken
End If
Next mteller

'controle op aantal cijfers
If Len(mnummer) <> 12 Then
GoTo fout
Else
'controle nummer
mdeeltal = Val(Left(mnummer, 10))
mcontrolegetal = Val(Right(mnummer, 2))
mquotient = Int(mdeeltal / 97)
mrest = mdeeltal - mquotient * 97
If mrest <> mcontrolegetal Then
GoTo fout
End If
End If
End If
Exit Sub

fout:
MsgBox "Foutief rekeningnummer!", vbExclamation
Cancel = True
End Sub
Vooraleer de invoer op te slaan (BeforeUpdate) wordt deze gebeurtenisprocedure uitgevoerd.

 

Vooreerst testen we of er iets werd ingevoerd. Het rekeningnummer is geen vereist gegeven! De controle gaat dus slechts verder indien er een invoer is.

We halen de cijfers uit de invoer.

 

 

Vervolgens controleren we het aantal cijfers.
Met GoTo fout wordt de subprocedure "fout" in deze gebeurtenisprocedure uitgevoerd.

 

Tenslotte passen we het algoritme toe dat de juistheid van een rekeningnummer test.

 

 

Met Exit Sub wordt de gebeurtenisprocedure verlaten.

In geval van fout wordt de subprocedure "fout" uitgevoerd. Hierin verschijnt de foutmelding en blijft de schermcursor op het tekstvakobject van het rekeningnummer staan.

Terug