Avatar billede juks Novice
07. juli 2002 - 17:16 Der er 16 kommentarer og
1 løsning

ikke så klog

hej !
jeg har et lille problem med et lille stykke kode. formålet med denner er bare at tjekke om der eksitere et given cprnr. så man ungår dubletter men det virker ikke ....

---------------------
Private Sub Cprnrbox_AfterUpdate()
If IsNull(Cprnr) Then
Exit Sub
Else
If DCount("[Cprnr]", "tbl_Journal", "[cprnr]" = Me.Cprnr) = 0 Then
Exit Sub

Else
MsgBox "Der er allerede oprettet en journal med dette cprnr."
End If
End If
End Sub
-------------------------
er der nogen der kan hjælpe mig !!!
Avatar billede mugs Novice
07. juli 2002 - 17:51 #1
I tabellen kan du definere, at feltet CPR skal være indekseret uden dubletter.

Du kan også lave en modulus 11 beregning, der kontrollerer om det indtaste CPRNR er korrekt.

Et CPRNR er ikke blot en række tilfældige tal. De første 6 cifrer er naturligvis afhængige af din fødselsdato. De sidste 4 er en nøje udregnet matematisk formel, der tager højde for både:

-dit køn
-hvilket århundrede du er født i


Jeg har en testdb liggende der beregner om det indtastede CPRNR er matematisk korrekt. Læg din e-mail hvis du vil have den tilsendt.

Ellers burde flg fungere i et numerisk felt:

DCount("*", "Tabel", "[Feltnavn] > 1 )

Hvis feltet er alfanumerisk skal det se sådan ud:

DCount("*", "Tabel", "[Feltnavn] > '"1"' )
Avatar billede mugs Novice
07. juli 2002 - 17:52 #2
Kroteriet skal selvfølgelig ikke være >1 men >0!!!
Avatar billede juks Novice
07. juli 2002 - 18:01 #3
DCount("*", "Tabel", "[Feltnavn] > 1 )´ kan jeg ikke bruge til noget ..
jeg skal jo tjekke cprnr. er indtastet i forvejen derfor ..
DCount("[Cprnr]", "tbl_Journal", "[cprnr]" = Me.Cprnr) = 0
Avatar billede terry Ekspert
07. juli 2002 - 18:07 #4
If DCount("[Cprnr]", "tbl_Journal", "[cprnr]'" = Me.Cprnr & "'") = 0 Then

I am assuming that CPR field is TEXT!
Avatar billede juks Novice
07. juli 2002 - 18:13 #5
terry rart at se dig igen !!!
det er virker ikke , jeg tror det er fordi at i tabellen er der(-)  xxxxxxx-xxxx
Avatar billede terry Ekspert
07. juli 2002 - 18:20 #6
Hi Juks hows thing?
Send the dB to terry@santhell.dk and I will take a look!
Avatar billede terry Ekspert
07. juli 2002 - 18:24 #7
As I suspected you have are using a text field so you have to use '' around the field.
You could also try Me!Cprnr
You use ! if your referencing the database field name and . when you reference the field name on the form. Quit eoften they are the same so it shouldnt matter but if they are different then it will give problems!

If DCount("[Cprnr]", "tbl_Journal", "[cprnr]'" = Me!Cprnr & "'") = 0 Then
Avatar billede juks Novice
07. juli 2002 - 18:31 #8
jeps den er sendt påforhånd tak....
Avatar billede terry Ekspert
07. juli 2002 - 19:22 #9
Hi juks
This is what you have
If DCount("[Cprnr]", "tbl_Journal", "[cprnr]'" = Me.Cprnr & "'") = 0 Then

This is what you SHOULD have!
If DCount("[Cprnr]", "tbl_Journal", "[cprnr] ='" & Me.Cprnr & "'") = 0 Then

Sorry, my fault!
Avatar billede mugs Novice
07. juli 2002 - 20:59 #10
terry og juks > Tager Jeres kode højde for, om der indtastes forkert?

Koden kontrollerer blot, om man ikke har indtastet det samme CPRNR 2 gange. Men hvis man laver den samme fejl 2 gange, bliver fejlen accepteret, dog kan man ikke indtaste CPRNR 2. gang og således ikke gentage fejlen. Men det retter dog ikke 1. gang fejlen er indtastet.

Man kan sige meget om vores danske gennemkontrollerede samfund, men m.h.t. CPRNR, der har man (sgu) virkelig tænkt sig om.

terry > jeg tillader mig at sende min testdb til dig. jeg ved fra tidligere at du benytter xp, så jeg zipper den.
Avatar billede terry Ekspert
07. juli 2002 - 21:09 #11
mugs>No its deosnt but that wasnt the question! Only if it already exists. There COULD be code elsewhere which could do that check!
:o)
Avatar billede mugs Novice
07. juli 2002 - 21:16 #12
terry > It wasnt the question - I agree with You, but not many people kwows, that it is possible to check the CPRNR in this way, AND I guess that juks doesn't has the code to check the CPRNR.
:o)
Avatar billede terry Ekspert
07. juli 2002 - 21:31 #13
Hey mugs>Can you remember AGES ago where I think we both gave an answer to a CPR check question? This i swhat I gave:

Function CPR_Ok(ByVal CPR As Variant) As Variant
' Returns TRUE if CPR is valid

Dim I As Integer
Dim Multipliers(1 To 10) As Integer
Dim Sum As Integer

    If Not IsNull(CPR) Then
        Multipliers(1) = 4
        Multipliers(2) = 3
        Multipliers(3) = 2
        Multipliers(4) = 7
        Multipliers(5) = 6
        Multipliers(6) = 5
        Multipliers(7) = 4
        Multipliers(8) = 3
        Multipliers(9) = 2
        Multipliers(10) = 1
       
        Sum = 0
       
        If Len(CPR) = 10 Then
            For I = 1 To 10
                Sum = Sum + CInt(Mid$(CPR, I, 1)) * Multipliers(I)
            Next I
       
            CPR_Ok = (Sum Mod 11) = 0
           
        End If
    End If
           
End Function
Avatar billede terry Ekspert
07. juli 2002 - 21:36 #14
This function ONLY checks for a valid CPR it doesnt give an indication as to what might be wrong as your example does, but it all depends on what you want (what is needed) :o)
Avatar billede mugs Novice
07. juli 2002 - 21:45 #15
terry > I have found the question You referring to. You are right, the answer depends of what you want. That answer is correct, but I think that, in many cases, it is nessecarey (nødvendigt) in a MsgBox to tell what's wrong and not only: It's wrong.
Avatar billede juks Novice
07. juli 2002 - 22:15 #16
mugs du må gerne sende cprdb'en til mig  help@mail.dk
Avatar billede mugs Novice
07. juli 2002 - 22:53 #17
Sendt til juks
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