2016-04-18 2 views
-2

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

+0

мне нужно вставить Luhn алгоритм в поле «Номер ссылки» поэтому он генерирует контрольную цифру для наших у клиентов BPA, они не могут сделать р а у Мент без правильного номера чека. Номер чека создается по номеру телефона пользователя –

+0

Я нашел этот код. http://www.tek-tips.com/faqs.cfm?fid=6704, но я не уверен, как это применимо с номером телефона –

ответ

0

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

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 = "" 
CheckDigit = Modulus1x(PhoneNumber, 10) 

PhoneNumberWithCheckDigit = PhoneNumber & CheckDigit 

А с функцией здесь: Modulus Check

можно проверить на PhoneNumberWithCheckDigit

+0

Большое вам спасибо. ты лучший –

Смежные вопросы