modulo 97, restgetal bepalen

Status
Niet open voor verdere reacties.

Bospeen

Gebruiker
Lid geworden
23 aug 2005
Berichten
150
Beste forumleden,

Ik ben op zoek naar een functie waarmee ik een controle op de geldigheid van een nummer kan uitvoeren, de zogenaamde "modulo 97" check. In het Excel forum kom ik hierover een aantal topics tegen, maar kan niks vinden in dit Access forum. Maar misschien heeft iemand hier al enige kennis van.

Voorbeeld modulo 97 check op nummer 23211234567891113
Dit getal gedeeld door 97 = 239291078019496,01030927835051546391752577319588
Als het restgetal (achter de komma) x 97 = 1, dan voldoet dit nummer aan de modulo 97 check. In dit geval is het dus een correct nummer.

Is er een makkelijke manier om voor deze berekening het restgetal te bepalen?
 
Op exact dezelfde manier als je dat in Excel doet, de berekening is volkomen identiek. Alleen is de manier waarop je aan het getal komt anders, waarschijnlijk makkelijker omdat je een vast veld als input gebruikt en niet een of andere vage celverwijzing.
 
Ik ben er nog niet uit :confused:
Ik heb geprobeerd het restgetal te verkrijgen d.m.v. [getal]/97 - INT([getal]/97), maar krijg het niet werkend. Het probleem lijkt te schuilen in de grootte van de getallen...
 
Je voorbeeld getal is veel te groot voor een integer, je Zulu een grotere dimensie moeten gebruiken. Kijk eens in de help naar de verschillende opmaken. Overigens heeft Excel hetzelfde probleem als je met variabelen gaat rekenen. Je kunt beter Round gebruiken om het gehele getal te berekenen.of MOD
 
Ik heb een bijlage bijgevoegd met een voorbeeld berekening (die dus fout loopt)
De grootst mogelijk getallen zijn volgens mij van het formaat Decimal (cDec) maar hier kom ik er ook niet mee uit.
Graag uw hulp!
 

Bijlagen

  • modulo 97.zip
    28,3 KB · Weergaven: 83
Zelfs aan grote getallen zit een limiet, hier een methode die werkt met een string.
Code:
    Dim sNummer As String
    Dim lResultaat As Long
    Dim i As Integer
        
    sNummer = "2321" & Left(Me.getal, 9) & "11" & Right(Me.getal, 2)

    lResultaat = 0
    For i = 1 To Len(sNummer)
        lResultaat = (lResultaat * 10 + Mid(sNummer, i, 1) - "0") Mod 97
    Next
bron: https://www.geeksforgeeks.org/how-to-compute-mod-of-a-big-number/
 
Laatst bewerkt:
Mooi gevonden alphamax.
Alleen het opbouwen van sNummer is nergens voor nodig.
Je kan direct een willekeurig nummer invoeren.

Tardis
 
@Tardis
Heb je de zipfile uit bericht#5 bekenen?
De TS/Bospeen doet dat namelijk wel, en is specifiek voor zijn/haar probleem.
 
Dat klopt alphamax en zéér bedankt voor deze slimme oplossing!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan