Another way is to put this function in a modulem, and then call it from a query. It calculates age from the cpr-number including century, (and btw your'e right about 1850, or rather 1858).
unction CprAlder(cpr As String) As Byte
'JKrons, 2002
'Finder fødsels-århundredet ud af
'et cpr-nummer på formen xxxxxx-xxxx
'Den virker kun indtil 2036, hvor cpr-nummersystemet i
'dets nuværende form ophører med at fungere
'se nærmere på
www.cpr.dkIf Not IsNull(cpr) Then
Dim bytCent As Byte
Dim bytSevdig As Byte
Dim bytCpryear As Byte
Dim bytCprmonth As Byte
Dim bytCprday As Byte
Dim strErrtxt As String
Dim datTemp As Date
strErrtxt = "Der eksisterer ikke lovlige cpr-numre, hvor årstallet er "
bytSevdig = Mid(cpr, 8, 1)
bytCpryear = Mid(cpr, 5, 2)
bytCprmonth = Mid(cpr, 3, 2)
bytCprday = Mid(cpr, 1, 2)
Select Case bytSevdig
Case 0 To 3
bytCent = 19
Case 4, 9
If bytCpryear <= 36 Then
bytCent = 20
Else
bytCent = 19
End If
Case 5 To 8
If bytCpryear <= 36 Then
bytCent = 20
ElseIf bytCpryear >= 58 Then
bytCent = 18
Else
strErrtxt = strErrtxt & bytCpryear & " og 7. ciffer er " & bytSevdig
MsgBox strErrtxt, vbOKOnly + vbCritical, "CPR-nummer fejl"
Exit Function
End If
End Select
datTemp = DateSerial(bytCent & bytCpryear, bytCprmonth, bytCprday)
If datTemp > Date Then
MsgBox "Den pågældende person er ikke født endnu", vbOKOnly + vbExclamation, "CPR-nummer fejl"
Exit Function
End If
If Mid(datTemp, 7, 2) = 18 Then
CprAlder = Right(DatePart("yyyy", Date - datTemp), 2) + 100
Else
CprAlder = Right(DatePart("yyyy", Date - datTemp), 2)
End If
End If
End Function
Then use the function in your query, something like this
SELECT CPR, cpralder([cpr]) AS Alder, AfmeldtXYZ
FROM Tabel2
WHERE cpralder([cpr])>=50 AND Tabel2.AfmeldtXYZ=-1;