[ milinkoi @ 17.10.2004. 19:03 ] @
Interesuje me ako u bazi imam tabelu koja sadrzi neke brojeve koji predstvaljaju JMBG, kako mogu da ih sve proverim da li su ispravni... 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 |