Nasao sam nesto ovako ali ne znam kako bih to mogao da upotrebim?!
komplet funkcija u Visual Basicu (za Access) za testiranje
' i generiranje kontrolne znamenke za JMBG
' autor: Predrag Gjuro Kladaric, 1999
' zelite li koristiti ovaj kod, slobodni ste to uciniti
' pod uvjetom da mi o takvoj upotrebi posaljete obavijest
' na [email protected]
'**********************************************************
' inicijalni setup za testiranje ispravnosti JMBG-a
' za racunanje JMBG kontrolne znamenke potrebno je
' polje tezina pojedinih znamenki
'**********************************************************
Sub InitVerifyJMBG()
TezineZnamenkiZaJMBG(1) = 2
TezineZnamenkiZaJMBG(2) = 3
TezineZnamenkiZaJMBG(3) = 4
TezineZnamenkiZaJMBG(4) = 5
TezineZnamenkiZaJMBG(5) = 6
TezineZnamenkiZaJMBG(6) = 7
TezineZnamenkiZaJMBG(7) = 2
TezineZnamenkiZaJMBG(8) = 3
TezineZnamenkiZaJMBG(9) = 4
TezineZnamenkiZaJMBG(10) = 5
TezineZnamenkiZaJMBG(11) = 6
TezineZnamenkiZaJMBG(12) = 7
TezineInicijalizirane = 1
End Sub
'**********************************************************
' testira JMBG
' vraca rezultat testiranja u obliku True/False
' zove funkciju VerifyJMBG() za stvarno testiranje
'**********************************************************
Function jmbg_test(s As String) As Variant
Dim a
'MsgBox "jmbg_test " & s
a = VerifyJMBG(s)
If a <> 999 Then
'MsgBox "Loš JMBG, a = " & a
jmbg_test = False
Else
jmbg_test = True
'If Mid(s, 10, 1) > "4" Then
' [fldSpol] = 1
'Else
' [fldSpol] = 0
'End If
End If
End Function
'**********************************************************
' racuna iz JMBG starost u godinama na datum 1. travnja 1998.
' prilagodite konstante ili poopcite kod ako vam treba :-)))
'**********************************************************
Function starostJMBG(JMBG As String) As String
Dim godina As Integer
Dim mjesec As Integer
godina = Mid(JMBG, 5, 3)
mjesec = Mid(JMBG, 3, 2)
starost = 998 - godina - 1
If mjesec < 4 Then starost = starost + 1
starostJMBG = starost
End Function
'**********************************************************
' testira ispravnost JMBG
' ne vraca rezultat, nego korisniku ispisuje upozorenje
' zove funkciju VerifyJMBG() za stvarno testiranje
'**********************************************************
Function TestJMBG(JMBG) As Integer
Dim tmp As String
If Not IsNull(JMBG) Then
tmp = JMBG
If VerifyJMBG(tmp) <> 999 Then
MsgBox "JMBG nije dobar, popravite to"
End If
End If
End Function
'**********************************************************
' prava funkcija za racunanje kontrolne znamenke
' returns:
' 999 control digit is appropriate
' 0-9 should-be control digit (meaning that the given control digit is not appropriate)
' 10 icalculable control digit
' 11 illegal characters
' 12 not proper length
'
' If you would like VerifyJMBG() to calculate appropriate control digit, supply JMBG with non-digit
' on the last place, for example "123456789012." VerifyJMBG() will return 0-10 (10 means that
' control digit can not be calculated for the given number)
'**********************************************************
Function VerifyJMBG(JMBG As String) As Integer
Dim suma As Integer
Dim i As Integer
If TezineInicijalizirane = 0 Then InitVerifyJMBG
If Len(JMBG) <> 13 Then
VerifyJMBG = 12 ' JMBG not proper length
Else
For i = 1 To 12
znamenka$ = Mid$(JMBG, 13 - i, 1)
If znamenka$ > "9" Or znamenka$ < "0" Then
VerifyJMBG = 11 ' Illegal character in JMBG
GoTo exitFunction
Else
suma = suma + Val(znamenka$) * TezineZnamenkiZaJMBG(i)
End If
Next i
kontrolnaZnamenka = suma Mod 11
If kontrolnaZnamenka = 0 Then
If Right$(JMBG, 1) = "0" Then
VerifyJMBG = 999 ' OK
Else
VerifyJMBG = 0 ' should-be
End If
ElseIf kontrolnaZnamenka = 1 Then
VerifyJMBG = 10 ' bad number - icalculable control digit
ElseIf 11 - kontrolnaZnamenka = Val(Right$(JMBG, 1)) Then
VerifyJMBG = 999 ' OK
Else
VerifyJMBG = 11 - kontrolnaZnamenka ' should be
End If
End If
exitFunction:
End Function