Avatar billede dane022 Seniormester
24. september 2005 - 20:34 Der er 8 kommentarer og
1 løsning

Hjælp til cpr kontrol fra make-it-easy

Jeg har hentet koden til kontrol af cpr nummer efter modulus 11, fra make-it-easy hjemmsiden. Der står ikke så meget på hjemmesiden om hvordan man får koden til at virke i sin database.
Så hvis mit felt med cpr nummer i en formular hedder [cpr], hvad skal jeg så gøre for at få kontrollen integreret i min formular?
Avatar billede mugs Novice
24. september 2005 - 21:04 #1
Du skal sørge for at ændre koden således, at feltet også i koden hedder cpr.
Men du skriver ikke hvilken fejl du får, det vil være til stor hjælp.
Avatar billede mugs Novice
24. september 2005 - 21:11 #2
Jeg har et eksempelmjeg kan sende dig (ikke makeiteasy eksempel), men stadig efter modulus 11 metoden.

Så vidt jeg erfarer, har modulus 11 metoden dog en begrænset levetid, idet der vil blive tilføjet endnu et ciffer til et CPRNR. Hvordan ved jeg ikke, og det er da muligt at modulus 11 stadig kan benyttes.
Avatar billede erikjacobsen Ekspert
24. september 2005 - 21:25 #3
Personnumrets 10. ciffer fungerer i dag som et kontrolciffer. Det må imidlertid forventes, at der inden for en kortere tidshorisont vil blive tildelt 10-cifrede personnumre uden det sædvanlige kontrolciffer. Det er vigtigt, at der i IT-systemer m.v., hvor kontrolcifret hidtil er benyttet, tages højde herfor, inden det første personnummer uden kontrolciffer dukker op og skal behandles.

Fra: http://www.cpr.dk/Index/mainstart.asp?o=2&n=0&s=4

Så det virker lidt omsonst at bruge kræfter på et modulus 11 check. "en kortere tidshorisont" kan selvfølgelig dække over en del år ;)
Avatar billede claesdamlund Nybegynder
24. september 2005 - 23:35 #4
Du kan indsætte følgende kode på BeforeUpdate eventen på din cpr tekstboks:

Private Sub cpr_BeforeUpdate(Cancel As Integer)
Dim strCheckCifre As String, intTotal As Integer, intTæller As Integer

strCheckCifre = "4327654321"

For intTæller = 1 To 10
    intTotal = intTotal + Mid(cpr, intTæller, 1) * Mid(strCheckCifre, intTæller, 1)
Next intTæller

If intTotal Mod 11 <> 0 Then
    MsgBox "Ugyldigt CPR nummer", , "Fejl"
    Cancel = True
    cpr.SelStart = 0
    cpr.SelLength = 10
End If
End Sub

Koden forudsætter at cpr nummer altid indtastes som 10-cifret værdi. Du bør overveje at lave yderligere tjek af om dét er tilfældet.
Avatar billede mugs Novice
25. september 2005 - 09:42 #5
Indsæt thomasjepsen's kode i et modul og navngiv modulet Module1. Første linie skal se således ud:

Public Function CPR_OK(cpr) As Boolean

Procedüren hedder CPR_OK og i parantesen ser du, at der modtages en variabel (cpr). I din formular skal du nu kalde procedüren således:

Private Sub cpr_BeforeUpdate(Cancel As Integer)
Module1.CPR_OK cpr
End Sub

Du kalder Module1 der indeholder procedüren CPR_OK og sender variablen cpr til modulet.
Avatar billede dane022 Seniormester
25. september 2005 - 13:32 #6
Mugs du må gerne sende mig eksemplet, jeg har problemer med at få det til at virke
brian_moeller@ishoejby.dk
Avatar billede mugs Novice
25. september 2005 - 13:34 #7
Sendt - Får du nogen fejl?
Avatar billede dane022 Seniormester
25. september 2005 - 13:54 #8
Både og, men dit eksempel har vist mig hvor jeg har gjort det forkert. De linier der står efter end function, havde jeg også stående i modulet.
Og så kan jeg faktisk ikke huske min fejl nr. 2, men jeg skriver den hvis det er.
Ellers så ser det fornuftigt ud. Tak
Avatar billede mugs Novice
25. september 2005 - 13:56 #9
Selv tak og tak for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester