Jonern Skrevet 11. oktober 2012 Del Skrevet 11. oktober 2012 Hei! Jeg har laget en inputkontroll på en tekstboks i et Access skjema for å kontrollere at det inntastede kontonummeret er gyldig. Den virker på mitt og mange kontonummer, men i går når opplegget ble brukt "live" var det flere kontonummer som ble avslått som ugyldige. Det til tross for at de ble skrevet av rett fra bankkort. Jeg har tatt utgangspunkt i denne Wiki-artikkelen når jeg skrev koden: http://no.wikipedia.org/wiki/MOD11 Microsoft Visual Basic-koden: Private Sub Konto_BeforeUpdate(Cancel As Integer) Dim Vekttall As Variant Dim TvSum As Integer Dim Kontonr As String If IsNull(Forms![frmRegLeverandør]![Konto]) = False Then Kontonr = Forms![frmRegLeverandør]![Konto] If Len(Kontonr) = 11 Then TvSum = 0 Vekttall = Array(5, 4, 3, 2, 7, 6, 5, 4, 3, 2) Dim i As Integer For i = 1 To 10 TvSum = TvSum + Vekttall(i - 1) * Val(Mid(Kontonr, i, 1)) Next i If (11 - (TvSum Mod 11)) <> Val(Mid(Kontonr, 11, 1)) Then MsgBox ("Feil i sjekksum!" & vbCrLf & vbCrLf & "Har du skrevet inn riktig nummer?") End If Else MsgBox ("Må være 11 tall uten skilletegn.") End If End If End Sub Det som er litt kjedelig er at jeg ikke kan gi eksempler på kontonummer som blir ugyldige, fordi det er sensitiv informasjon. Men jeg fant nå et kontonummer som gir feil, og det slutter på 0. Kan det ha noe med denne setningen i den nevnte Wiki-artikkelen å gjøre? Dersom tverrsummen er delelig med 11 blir også resten 0 og kontrollsifferet 0. Dersom «resten» ved divisjonen blir 1 skal «kontrollsifferet» ha tallverdien 10, da benyttes isteden et minustegn (eller bindestrek) istedenfor kontrollsifferet. Imidlertid gjelder for kontonumre (og også for personnummer) at slike tall isteden skal forkastes slik at for de typene tall kan kontrollsiffer «-» aldri forekomme. Så, hvis noen kan hjelpe meg med å se hva som er galt så er jeg takknemmelig! Lenke til kommentar
jonny Skrevet 11. oktober 2012 Del Skrevet 11. oktober 2012 (endret) Det stemmer at dette feiler for kontonr. som slutter på 0. Hvis tverrsummen er delelig med 11, vil (11 - (TvSum Mod 11)) bli 11. Da skal kontrollsifferet være 0. Du kan vel fikse det ved å bruke "mod 11" en gang til, slik: ((11 - (TvSum Mod 11)) Mod 11) Endret 11. oktober 2012 av jonny 2 Lenke til kommentar
Jonern Skrevet 12. oktober 2012 Forfatter Del Skrevet 12. oktober 2012 Tusen takk skal du ha! Det ser ut til å virke nå med den endringen Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå