Применить алгоритм Лунха в доступе

Кто-то знает о том, как я могу применить алгоритм Лана в доступе, для проверки ссылочного номера с номером телефона

1 ответ

Решение

Эта функция рассчитает контрольную цифру для вас:

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

Просто передайте номер телефона:

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

PhoneNumberWithCheckDigit = PhoneNumber & CheckDigit

И с функцией здесь: Проверка модуля

Вы можете проверить PhoneNumberWithCheckDigit

Другие вопросы по тегам