-2

Someone know about how can I apply the Lahn algorithm in access, for verify the reference number with the phone number

rsjaffe
  • 5,600
  • 7
  • 27
  • 39
  • I need to insert the Luhn Algorithm into the 'reference number' field so it generates the check digit for our Bpa y customers, they cannot make p a y ment without the correct check number. The check number is generated from the customer's 'phone number' – Andrés Pérez Apr 18 '16 at 00:25
  • I've found this code. http://www.tek-tips.com/faqs.cfm?fid=6704 but I'm not sure how apply with the phone number – Andrés Pérez Apr 18 '16 at 00:46

1 Answers1

0

This function will calculate the check digit for you:

Public Function Modulus1x(ByVal strNum As String, ByVal intModulus As Integer) As Integer

    ' Creates the Modulus-10 or -11 check digit for strNum.
    ' Non-numeric characters are ignored.

    ' Maximum length of number.
    Const cintNumLenMax = 31

    Dim strTmp    As String
    Dim intChr    As Integer
    Dim intLen    As Integer
    Dim intSum    As Integer
    Dim intVal    As Integer
    Dim intWeight As Integer
    Dim intCount  As Integer
    Dim intChk    As Integer

    Select Case intModulus
      Case 10, 11
        intLen = Len(strNum)
        If intLen > 0 Then
          ' Remove non-numeric characters.
          For intCount = 1 To intLen
            intChr = Asc(Mid(strNum, intCount))
            If intChr >= 48 And intChr <= 57 Then
              strTmp = strTmp & Chr(intChr)
            End If
          Next intCount
          strNum = strTmp
          intLen = Len(strNum)

          If intLen > 0 Then
            ' Calculate check digit.
            If intLen <= cintNumLenMax Then
              For intCount = 1 To intLen 
                intVal = Val(Mid(strNum, intLen - intCount + 1, 1))
                Select Case intModulus
                  Case 10
                    intWeight = 1 + (intCount Mod 2)
                    intVal = intWeight * intVal
                    intVal = Int(intVal / 10) + (intVal Mod 10)
                  Case 11
                    intWeight = 2 + ((intCount - 1) Mod 6)
                    intVal = intWeight * intVal
                End Select
                intSum = intSum + intVal
              Next intCount
              intChk = -Int(-intSum / intModulus) * intModulus - intSum
            End If
          End If
        End If
    End Select

    Modulus1x = intChk

End Function

Just pass the phone number:

PhoneNumber = "+01234568790"
CheckDigit = Modulus1x(PhoneNumber, 10)

PhoneNumberWithCheckDigit = PhoneNumber & CheckDigit

And with the function here: Modulus Check

you can validate a PhoneNumberWithCheckDigit

Community
  • 1
  • 1
Gustav
  • 53,498
  • 7
  • 29
  • 55