
15/04/2005, 07:34
|
 | Colaborador | | Fecha de Ingreso: diciembre-2003 Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 5 meses Puntos: 144 | |
Bueno, yo tengo esto en VBA para excel. Te lo paso tal y como lo tengo para que lo adaptes con unos pequeños cambios a asp:
NIF:
Código:
'si el número del NIF es numérico
If IsNumeric(NumeroNIF) Then
'le da formato con punto de millar
NumeroNIF = Format(NumeroNIF, "##,##0")
'y calculamos la letra asignada
Dim PasarNumeroALetra As Long
PasarNumeroALetra = NumeroNIF - Int(NumeroNIF / 23) * 23
Select Case PasarNumeroALetra
Case 0
Texto2.Caption = "T"
Case 1
Texto2.Caption = "R"
Case 2
Texto2.Caption = "W"
Case 3
Texto2.Caption = "A"
Case 4
Texto2.Caption = "G"
Case 5
Texto2.Caption = "M"
Case 6
Texto2.Caption = "Y"
Case 7
Texto2.Caption = "F"
Case 8
Texto2.Caption = "P"
Case 9
Texto2.Caption = "D"
Case 10
Texto2.Caption = "X"
Case 11
Texto2.Caption = "B"
Case 12
Texto2.Caption = "N"
Case 13
Texto2.Caption = "J"
Case 14
Texto2.Caption = "Z"
Case 15
Texto2.Caption = "S"
Case 16
Texto2.Caption = "Q"
Case 17
Texto2.Caption = "V"
Case 18
Texto2.Caption = "H"
Case 19
Texto2.Caption = "L"
Case 20
Texto2.Caption = "C"
Case 21
Texto2.Caption = "K"
Case 22
Texto2.Caption = "E"
Case 23
Texto2.Caption = "T"
End Select
'ponemos la etiqueta correspondiente
Texto3.Caption = NumeroNIF & "-" & Texto2.Caption
End If
Para los bancos, imagino que buscas algo que valide el dígito de control, ¿no?. Pues ahí va (de VBA para excel):
Código:
'si los datos tienen el formato exigido (10 dígitos la cuenta,
'y 4 dígitos la entidad y la oficina), o si no están vacías cualquiera de ellas...
If Cuenta = Format(Cuenta, "0000000000") And Oficina = Format(Oficina, "0000") _
And Entidad = Format(Entidad, "0000") And Cuenta <> "" And Oficina <> "" And Entidad <> "" Then
'Mid sifnifica extraer un valor
N1 = Mid(Entidad, 1, 1) * 4
N2 = Mid(Entidad, 2, 1) * 8
n3 = Mid(Entidad, 3, 1) * 5
n4 = Mid(Entidad, 4, 1) * 10
n5 = Mid(Oficina, 1, 1) * 9
n6 = Mid(Oficina, 2, 1) * 7
N7 = Mid(Oficina, 3, 1) * 3
N8 = Mid(Oficina, 4, 1) * 6
'Mod significa obtener residuo de una división
N9 = (N1 + N2 + n3 + n4 + n5 + n6 + N7 + N8) Mod 11
PrimerDigito = 11 - N9
If PrimerDigito = 10 Then
PrimerDigito = 1
End If
If PrimerDigito = 11 Then
PrimerDigito = 0
End If
N1 = Empty
N2 = Empty
n3 = Empty
n4 = Empty
n5 = Empty
n6 = Empty
N7 = Empty
N8 = Empty
N9 = Empty
N1 = Mid(Cuenta, 1, 1) * 1
N2 = Mid(Cuenta, 2, 1) * 2
n3 = Mid(Cuenta, 3, 1) * 4
n4 = Mid(Cuenta, 4, 1) * 8
n5 = Mid(Cuenta, 5, 1) * 5
n6 = Mid(Cuenta, 6, 1) * 10
N7 = Mid(Cuenta, 7, 1) * 9
N8 = Mid(Cuenta, 8, 1) * 7
N9 = Mid(Cuenta, 9, 1) * 3
N10 = Mid(Cuenta, 10, 1) * 6
N11 = (N1 + N2 + n3 + n4 + n5 + n6 + N7 + N8 + N9 + N10) Mod 11
SegundoDigito = 11 - N11
If SegundoDigito = 10 Then
SegundoDigito = 1
End If
If SegundoDigito = 11 Then
SegundoDigito = 0
End If
'escribimos el Dígito de Control completo
Texto4.Caption = PrimerDigito & SegundoDigito
Texto5.Caption = Entidad & "-" & Oficina & "-" & PrimerDigito & SegundoDigito & "-" & Cuenta
'Liberamos memoria
N1 = Empty
N2 = Empty
n3 = Empty
n4 = Empty
n5 = Empty
n6 = Empty
N7 = Empty
N8 = Empty
N9 = Empty
N10 = Empty
N11 = Empty
PrimerDigito = Empty
SegundoDigito = Empty
Else
'si la cuenta no tiene el formato de 10 dígitos exigido
If Cuenta <> Format(Cuenta, "0000000000") Then
'que elimine la entrada
Cuenta = Empty
Cuenta.SetFocus
End If
'si la entidad no tiene el formato de 4 dígitos exigido
If Oficina <> Format(Oficina, "0000") Then
'que elimine la entrada
Oficina = Empty
Oficina.SetFocus
End If
'si la oficina no tiene el formato de 4 dígitos exigido
If Entidad <> Format(Entidad, "0000") Then
'que elimine la entrada
Entidad = Empty
Entidad.SetFocus
End If
End If
Ojo, esto es esn Visual Basic para Aplicaciones, y yo lo uso en excel (bueno, eso y un poco más de código, pero el necesario para el cálculo del nif y dígito de control es lo que te he puesto). No lo tengo aplicado en asp.
Salu2 |