Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Opet Provera JMBG

[es] :: Access :: Opet Provera JMBG

[ Pregleda: 10496 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

milinkoi
Milinko Isakovic

Član broj: 10585
Poruke: 15
*.skydsl.de.



Profil

icon Opet Provera JMBG17.10.2004. u 19:03 - pre 3604 dana i 10h

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 gjuro@kladaric.net

'**********************************************************
' 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


Isakovic
 
Odgovor na temu

stsung
NS

Član broj: 12899
Poruke: 432
*.dialup.neobee.net.



Profil

icon Re: Opet Provera JMBG18.10.2004. u 03:08 - pre 3604 dana i 2h
Pozd.
Da izvinesh, al nije mi do parsiranja ovog koda ... mozhda je najbolje da ti dam formulu za verifikaciju JMBG-a :

JMBG: ABCDEFHHIJKLM

M = 11 - ( 7*(A+G) + 6*(B+H) + 5*(C+I) + 4*(D+J) + 3*(E+K) + 2*(F+L) ) % 11

Znachi ako dati JMBG zadovoljava gorenavedenu formulu, onda je validan (shto ne znachi i da zaista postoji).

Svako dobro.
 
Odgovor na temu

filjo

Član broj: 17551
Poruke: 136
*.co.yu.



Profil

icon Re: Opet Provera JMBG18.10.2004. u 06:50 - pre 3603 dana i 22h
Laptopovi

Evo jutros bas nemam sta da radim:

Code:

Public Function ispravanJMBG(JMBG As String) As Boolean
    Dim niz(13) As Byte
    Dim i, br As Integer
    For i = 1 To 13
        niz(i) = Asc(Mid(JMBG, i, 1)) - Asc("0")
    Next i
    br = 0
    For i = 1 To 6
        br = br + (8 - i) * (niz(i) + niz(i + 6))
    Next i
    ispravanJMBG = ((11 - br Mod 11) = niz(13))
End Function
 
Odgovor na temu

gosha
Zemun

Član broj: 2384
Poruke: 547
*.ppp-bg.sezampro.yu.



Profil

icon Re: Opet Provera JMBG18.10.2004. u 11:04 - pre 3603 dana i 18h
Samo da se zna da postoje JMBG-ovi kojima kontrolni broj nije dobar.

Hoću da kažem da ima ljudi kojima je dodeljen JMBG sa pogrešno izračunatim
kontrolnim brojem.

Pozdrav Goran.
JokeJunky :)

Mrzim sublimirane marketinske poruke.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4719
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


Profil

icon Re: Opet Provera JMBG26.01.2006. u 17:33 - pre 3138 dana i 10h
Citat:

Samo da se zna da postoje JMBG-ovi kojima kontrolni broj nije dobar. Hoću da
kažem da ima ljudi kojima je dodeljen JMBG sa pogrešno izračunatim kontrolnim
brojem.


Tačno.

Jedno vreme sam (kao programer) sarađivao sa PIO (penziono i invalidsko
osiguranje) i mogu Vam reći sledeće iz pouzdanih izvora:

Ako taj kontrolni broj *nije tačan*, ili bolje rečeno - pogrešno je izračunat, može
se dogoditi da imate VELIKIH problema prilikom ostvarivanja prava na penziju.

Naime, postoji FORMAT ZAPISA koji se prenosi u PIO fond, medjutim njihov softver
IZBACUJE sve slogove (radnika neke firme), sa pogresnim kontrolnim brojem.

Naravno da bi od PIO trebala da stigne povratna informacija o neregularnim
uspisima da se provere - ali ne zaboravite da se radi o Srbiji :)

Ja sam napisao rutinu za proveru 1600 radnika u mojoj firmi. Bilo je oko 30
neispravnih. Crni je humor da je daleko veci procenat neispravnih brojeva upravo
bio u upravi PIO organizaciji :)

Verovatno kada se nadje neki krelac da racuna te brojeve - onda to radi serijski
loše.


Zato proveravajte.
 
Odgovor na temu

VladaPUB
Vladimir Sijacic
Novi Sad

Član broj: 614
Poruke: 337
*.ADSL.neobee.net.

ICQ: 59835304
Sajt: www.sincom.info


Profil

icon Re: Opet Provera JMBG15.02.2006. u 20:32 - pre 3118 dana i 7h
Sve u svemu nalozili ste me da razmisljam o JMBG , pa sam u excell-u napravio formu za racunanje poslednjeg, to jest kontrolnog broja. Ako nekom treba, pusticu mu na mail, javite se na vladapub@gmail.com
 
Odgovor na temu

pgklada
Predrag Gjuro Kladarić
Zagreb

Član broj: 94865
Poruke: 1
*.ffzg.hr.



Profil

icon Re: Opet Provera JMBG15.05.2006. u 17:20 - pre 3029 dana i 11h
hoho,

vidim da moj kod stoji ovdje i da se mucite s jmbg-ovima

moje iskustvo kaze, iako sam vise puta cuo da se generiraju neispravni jmbg-ovi (i ovdje u hrvatskoj i tamo u srbiji), jest da nisam nasao nijedan takav

nasao sam dva ili tri puta da covjek ima dokumente s krivo upisanim jmbg-om, no provjera je (u maticnom uredu, policiji itd.) je pokazala da je sam dokument krivo ispisan (zamijenjena jedna ili dvije znamenke), a ne da je covjeku inicijalno dodijeljen krivi jmbg

s druge strane, i moje su baze sadrzavale puno krivih jmbg-ova sve dok nisam poceo racunalno kontrolirati jmbg kod unosa, i ne dopustati da u bazu udje nepravilan jmbg - otkako sam sprijecio da u bazu udje krivi, korisnici se vec pobrinu da ipak nadju svoj ispravan jmbg

dakle, vjerojatno se radi (samo) o tome da su podaci krivo upisani u sve te baze

bilo kako bilo, ovdje na zapadu bivse jmbg-ovine nema losih jmbg-ova

pozdrav,

gjuro
 
Odgovor na temu

ljbm

Član broj: 39797
Poruke: 31
80.93.226.*



Profil

icon Re: Opet Provera JMBG16.05.2006. u 06:47 - pre 3028 dana i 22h

Code:

Public Function ispravanJMBG(JMBG As String) As Boolean
Dim niz(13) As Byte
Dim i, br As Integer
For i = 1 To 13
niz(i) = Asc(Mid(JMBG, i, 1)) - Asc("0")
Next i
br = 0
For i = 1 To 6
br = br + (8 - i) * (niz(i) + niz(i + 6))
Next i
ispravanJMBG = ((11 - br Mod 11) = niz(13))
End Function



Nema veze sa JMBG, ali tek da se zna...

U gornjem kodu promenljiva " i " ja tipa Integer a " br" je Variant !!!
U Accessu se mora eksplicitno deklarisati pronenljiva, dakle :

Dim i As Integer, Dim br As Integer.

lj.
 
Odgovor na temu

[es] :: Access :: Opet Provera JMBG

[ Pregleda: 10496 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.