Pesel.zip
Autor: Wojciech Wendrychowicz (Wojciech.Wendrychowicz@ptedom.pl)
Baza w formacie MsAccess 97
19kB, 5 września 2001
Pesel2.zip - uzupełnienie.
Autor: Mariusz (centrum@kcik.gov.pl)
Baza w formacie MsAccess 97
13kB, 13 czerwca 2002
Pesel3.zip - uzupełnienie 2.
Autor: Mariusz Cieciura (m.cieciura@polanglo.pl)
Baza w formacie MsAccess 2000
25kB, 20 listopada 2002
Errata: W przykładach występuje (łatwy do samodzielnego poprawienia)
błąd, na który zwrócił uwagę Krzysztof Przeklasa (krzysztof.przeklasa@centertel.pl).
Oto post Krzysztofa:
Witam,
przeglądając przykłady zamieszczone w Warsztacie, dotyczące
weryfikacji nr
PESEL tzn. Pesel, Pesel2, Pesel3 we wszystkich trzech
znalazłem mały błąd.
Występuje on w przypadku, gdy suma kontrolna jest liczbą
dwucyfrową (10 a
cyfra kontrolną 0), wtedy bezpośrednie porównanie z cyfrą
kontrolną zwraca
fałsz. Rozwiązanie tego problemu jest bardzo proste,
korzystając z kawałka
kodu zawartego w Pesel3 (Autor: Mariusz
Cieciura)
zamiast:
Sumakontrolna = (D1 + D2 * 3 + D3 * 7 + D4 * 9
+ D5 + D6 * 3 + D7 * 7 + D8 *
9 + D9 + D10 * 3)
Cyfrakontrolna = 10 -
(Sumakontrolna Mod 10)
powinno być:
Sumakontrolna = (D1 + D2 * 3 +
D3 * 7 + D4 * 9 + D5 + D6 * 3 + D7 * 7 + D8 *
9 + D9 + D10 *
3)
Cyfrakontrolna = Right(10 - (Sumakontrolna Mod 10),
1)
pozdrawiam
Krzysiek
Opis problemu:
Jak poznać, czy PESEL został wpisany prawidłowo?
Rozwiązanie:
Rozwiązanie (plik Pesel.zip) przysłał Wojciech Wendrychowicz, oto jego post:
P.S. Przyda się, przyda! Chyba każdemu, kto w swojej bazie rejestruje takie dane.
Uzupełnienie:
Uzupełnieniem do powyższego jest przykład Pesel2.zip, przysłany przez Mariusza. Oto co pisze Mariusz:
Uzupełnienie 2:
Mariusz Cieciura przysłał uzupełnienie nr 2 do programu sprawdzającego PESEL.
Teraz na podstawie tego numeru, program wpisuje datę urodzenia i płeć.
Ten pomysł na pewno spodoba się użytkownikom naszego oprogramowania,
może nawet ktoś zawoła "Ale czary, jaki ten komputer mądry!".
Nie byłoby to niemiłe...
Oto post Mariusza:
PESEL można sprawdzić także w sposób podany przez Leszka Żura. A oto, co pisze Leszek:
Private Sub Tekst36_AfterUpdate() On Error GoTo Err_Tekst36_AfterUpdate Dim Odp, C Odp = vbOK If Len([Tekst36]) <> 11 Then Odp = Odp * MsgBox("Zła dlugość Peselu", vbOKCancel) End If If Odp = vbOK And Len([Tekst36]) = 11 Then C = ((Mid([Tekst36], 1, 1) * 1 + Mid([Tekst36], 2, 1) * 3 + Mid([Tekst36], 3, 1) * 7 + Mid([Tekst36], 4, 1) * 9 + Mid([Tekst36], 5, 1) * 1 + Mid([Tekst36], 6, 1) * 3 + Mid([Tekst36], 7, 1) * 7 + Mid([Tekst36], 8, 1) * 9 + Mid([Tekst36], 9, 1) * 1 + Mid([Tekst36], 10, 1) * 3 + Mid([Tekst36], 11, 1) * 1) Mod 10) If C > 0 Then Odp = Odp * MsgBox("Złe CRC Peselu wynosi " & [C], vbOKCancel) End If End If'TUTAJ ROBISZ COS Z TYM PESELEM JAK JEST OKErr_Tekst36_AfterUpdate: MsgBox Err.Description Resume Exit_Tekst36_AfterUpdate End Sub