funcion Digito Control en .NET o VB

Germ?
21 de Septiembre del 2005
Por favor necesitaria la función para obtener el digito de control de una cuenta bancaria, muchisimas gracias.

Carlos
21 de Septiembre del 2005
El formato de la cuenta 1234/5678/DC/1234567890
(Procedencia/Oficina/Dígito Control/Cuenta)
La función espera que le pases una cuenta con este formato y separada por barras...
Espero que te ayude.

Public Function DoValidateDC(ByVal strCCC As String) As Boolean
' Valida que los dígitos de control de una cuenta bancaria sean correctos.
Dim strDcAux As String
Dim arrAux() As String
Dim lngSum As Long
Dim arrPesos(10) As Long
Dim lngIndex As Long

arrAux = Split(strCCC, "/")
If Len(strCCC) = 0 Or UBound(arrAux) <> 3 Then
DoValidateDC = False
Exit Function
Else
If Len(arrAux(0)) <> 4 Or Len(arrAux(1)) <> 4 Or Len(arrAux(2)) <> 2 Or Len(arrAux(3)) <> 10 Then
DoValidateDC = False
Exit Function
Else
If Not IsNumeric(arrAux(0)) Or Not IsNumeric(arrAux(1)) Or Not IsNumeric(arrAux(2)) Or Not IsNumeric(arrAux(3)) Then
DoValidateDC = False
Exit Function
End If
End If
End If

arrPesos(0) = 6
arrPesos(1) = 3
arrPesos(2) = 7
arrPesos(3) = 9
arrPesos(4) = 10
arrPesos(5) = 5
arrPesos(6) = 8
arrPesos(7) = 4
arrPesos(8) = 2
arrPesos(9) = 1

lngSum = 0
For lngIndex = 0 To 7
lngSum = lngSum + (CLng(Mid$(arrAux(0) & arrAux(1), 8 - lngIndex, 1)) * arrPesos(lngIndex))
Next
lngSum = lngSum Mod 11
lngSum = 11 - lngSum
Select Case lngSum
Case 11
lngSum = 0
Case 10
lngSum = 1
End Select
strDcAux = CStr(lngSum)

lngSum = 0
For lngIndex = 0 To 9
lngSum = lngSum + (CInt(Mid$(arrAux(3), 10 - lngIndex, 1)) * arrPesos(lngIndex))
Next
lngSum = lngSum Mod 11
lngSum = 11 - lngSum
Select Case lngSum
Case 11
lngSum = 0
Case 10
lngSum = 1
End Select

strDcAux = strDcAux & CStr(lngSum)
DoValidateDC = IIf(strDcAux = arrAux(2), True, False)
End Function