Getal met 2 cijfers herleiden naar één cijfer

Status
Niet open voor verdere reacties.

Peetbeest

Gebruiker
Lid geworden
1 mei 2013
Berichten
44
Ik zoek een manier om een kolom in een Query automatisch te berekenen. Ik zou de twee cijfers van een getal uit een andere kolom willen herleiden naar één cijfer door de twee cijfers op te tellen.
vb1. 52 wordt 7 (5+2=7)
vb2. 28 wordt 1 (2+8=10, 1+0=1)
Het liefst zou ik dit in een Query realiseren. Als dat niet mogelijk, hoe kan ik dit resultaat dan behalen in Access?
 
Dat kan wel, maar je krijgt een redelijk lange formule:
Code:
Expr: IIf(CInt(Left(Right([EAN];2);1))+CInt(Right(Right([EAN];2);1))>9;
	CInt(Left(CInt(Left(Right([EAN];2);1))+CInt(Right(Right([EAN];2);1));1))+CInt(Right(CInt(Left(Right([EAN];2);1))+CInt(Right(Right([EAN];2);1));1));
	CInt(Left(Right([EAN];2);1))+CInt(Right(Right([EAN];2);1)))
 
Hartelijk bedankt Octafish. Inderdaad een lange formule maar het werkt. Thanks a lot.
 
Een andere oplossing (veel netter in mijn ogen) is een aparte functie maken, en die aanroepen in de query.
Code:
Public Function Controlegetal(Getal As String) As Integer
Dim iLinks As Integer, iRechts As Integer, iSom As Integer

    iLinks = Mid(Getal, Len(Getal) - 1, 1)
    iRechts = Right(Getal, 1)
    iSom = iLinks + iRechts
    
    Do Until iSom < 10
        iLinks = Left(iSom, 1)
        iRechts = Right(iSom, 1)
        iSom = iLinks + iRechts
    Loop

    Controlegetal = iSom

End Function
In de query krijg je dan een hele simpele opdracht: Expr6: Controlegetal([EAN])
Voordeel hiervan is, dat je de berekening op elk willekeurig (cijfer)veld kunt laten uitvoeren. Al zou ik dan wel een foutafvanging inbouwen op tekst.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan