Kontrollen er nøjagtigt den samme, som udføres på CPR-nr med de samme vægte. Dvs. den udføres på de første 9 cifre af det 10-cifrede bankkontonummer. Er kontonummeret på færre end 10 cifre sættes nuller foran så kontonummeret er 10-cifret.
Erik Juul-> Jeg har testet Modulus-11-metoden på 200 kontonumre fra vores kundekartotek. Over halvdelen bestod ikke. Har du noget dokumentation på, at denne metode også duer på bankkontonumre?
Og hvad med giro-numre? De ser jo helt anderledes ud...?
2+16+8 Det er vist OCR-linien på et indbetalingskort. De 2 er lig med kort-typen - 16 er lig med betalings-ID og de sideste 8 er kontonummeret. Sæt 2 nuller foran de 8 cifre og du har et 10-cifret kontonummer, der kan chekkes med mod.11
Jeg har nu fundet frem til, at det IKKE er modulus-11-metoden, men derimod Modulus-10-metoden, som skal benyttes til kontonumre.
Nu er det jo desværre sådan, at man ikke bare kan skifte den ene linie i koden, hvor der står: If (checksum Mod 11) = 0 Then ... ud med If (checksum Mod 10) = 0 Then ...
Jeg har kun kunnet finde frem til stump XML-kode, som beregner checkciffer. Men da det lige så godt kunne stå på Swahili, så håber jeg at nogen af Jer multi-genier vil være behjælpelig med 'oversættelsen' til VB. Den findes halvvejs nede på denne side: http://www.blconsulting.dk/site.php?_page=tipsdiv.html#modulus10
Selvfølgelig, hvis nogen i forvejen ligger inde med en Modulus-10-funktion, så er de selvfølgelig meget velkomne til at score de 200p
tak for dit arbejde :o) Jeg arbejdet lidt med det og er kommet frem til denne funktion, som du meget gerne lige må kigge på:
Public Function CheckKonto(Kontonr As String) As Boolean Dim mult1 As Byte Dim mult2 As Byte Dim Konto As String Dim counter As Integer Dim prod As String Dim addi As Variant Dim rest As Long Dim check_digit As Byte
Do While counter > 0 mult1 = Mid(Konto, counter, 1) prod = Format(mult1 * mult2, "00") addi = addi + Val(Mid(prod, 1, 1)) + Val(Mid(prod, 2, 1)) If mult2 = 1 Then mult2 = 2 Else mult2 = 1 End If counter = counter - 1 Loop rest = addi Mod 10 If check_digit = (10 - rest) Mod 10 Then CheckKonto = True End Function
Problemet er, at jeg ikke er helt med på, hvad du vil med mult1 og mult2, samt prod. Derfor har jeg tilsjusket mig til denne kode. Du indtaster det fulde kontonr som parameter og funktionen returnerer true eller false afhængig af om check_digit er lig det sidste ciffer.
Hej Det kan måske godt gøres smartere, men det var taget fra et andet sprog (ABAP) og "oversat" på bedste beskub. mult1 bruger jeg til at det ciffer jeg er nået til og mult2 er fodi der skiftevis skal ganges med 1 og med 2.
Jeg har 2 konti: i Basisbank passer det heller ikke, men i Lokalbanken er det ok. Men er du sikker på, at kontonumre checkes med MOD 10?. Det gør SE-nr. fx også...
Ovennævnte bekræftelse netop modtaget fra en person, der har udviklet et lønprogram indeholdende bl.a. check af både cpr og bankkonto-numre. Det kunne tænkes at dine problemer med at få modulus 10-checkket til at fungere skyldes at du bruger et forkert modulus-check trods mine tidligere indlæg. Måske skulle du starte med at kigge på formatet for et kontonummer.
Erik-> hvordan forklarer du så, at begge de kontonumre jeg har (fra henholdsvis Lån & Spar og Nordea) er forkerte i henhold til Modulus-11? Visio->de 200 kunder, som jeg snakkede om er tilmeldt PBS på det kontonr, som er registreret i vores database. Dette ville næppe kunne lade sige gøre hvis kontonumrene 60-70% var forkerte.
Når jeg søger på "kontonr +modulus" på diverse søgemaskiner får jeg en masse links, som siger at jeg skal bruge Modulus 10-metoden (dog uden at give en præcis formel)
Grundet ovenstående, kan jeg ikke acceptere modulus 11 som et gyldigt svar.
Kan du give et eksempel på et kontonummer, der ikke kan klare Modulus-11 checket, jeg har ikke kunnet finde nogen. Hvis halvdelen af dine numre ikke opfylder chekket vil jeg foreslå dig at du lige kontrollere din måde at beregne Modulus-11 på.
Jeg har nu været i kontakt med Jyske Bank, som er den bank vi på det projekt jeg arbejder på lige nu bruger til bankoverførsler. Han siger at de forskellige banker selv vælger hvilket check de vil bruge på kontonumrene. Det er derfor ikke muligt at lave et entydigt check på kontonumre. Han mener heller ikke at de må udlevere "koden" for de enkelte banker. Det som de i Jyske Bank gør, er at tilbyde kunderne, at de kan sende kontonumrene ind til dem og få dem checket.
Så summa summarum: det er nok svært at få valideret dine kontoumre...
Bankerne kan selv checke kontonumre fordi de udveksler de forskellige check indbyrdes. De er bare ikke interresseret i at udlevere disse kodebeskrivelser til trediemand.
Efter at have læst ovenstående diskussion besluttede jeg mig for at kontakte finansrådet. Her er deres svar:
> Tak for din henvendelse om pengeinstitutternes registrerings- opg kontonumre. > > Der er ikke sektorfælles regler for længden af et kontonummer - det varierer således > fra pengeinstitut til pengeinstitut. > Et registreringsnummer er derimod altid på 4 cifre. > > Information om pengeinstitutternes registrerings- og kontonumre kan findes i > Modulusregisteret, der kan erhverves ved henvendelse til PBS. > > Moduludregisteret indeholder intervaller med pengeinstitutternes registrerings- og > kontonumre. Til hvert interval er der tilknyttet en specifik > modulusberegningsmetode. > Modulusregisteret indeholder derudover oplysning om kontonummerlængede m.v. > > > Med venlig hilsen > > Birgitte Mikkelsen
Håber det kan hjælpe nogen :-)
Synes godt om
Ny brugerNybegynder
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.