Sunteți pe pagina 1din 3

CLCULO LETRA DEL NIF-NIE1

Este es, en principio, un ejemplo para espaoles, dado


que los elementos que analizaremos (un NIF o un NIE) son
documentos propios de Espaa (hasta donde yo s).

De todas maneras es un ejemplo, creo yo, interesante para


analizar, dado que su relativa sencillez lo hace bastante
entendible.

Pues la idea es, simplemente, que en un campo introducimos un DNI (es decir, slo los
nmeros) y el campo nos devuelve la letra del NIF que correspondera. Si empezamos a
escribir esa numeracin con una letra significa que estamos escribiendo un NIE, por lo que el
cdigo detecta lo anterior y acta en consecuencia, devolvindonos la letra, esta vez, de un
NIE.

En el ejemplo vamos a utilizar un cuadro de texto, aunque es perfectamente aplicable sobre un


campo de una tabla en un formulario.

Veamos...

CREANDO NUESTRO FORMULARIO


Vamos a crear un formulario en blanco (o el formulario sobre nuestra tabla) y vamos a aadir
un cuadro de texto, que llamaremos txtDni2 (o aplicarlo sobre el campo donde vamos a
introducir el NIF).

Sacamos sus propiedades y en el evento Despus de actualizar generamos el siguiente


cdigo3:

Private Sub txtDni_AfterUpdate()


Dim elNIF As String
Dim primerCaracter As String
'Cogemos el valor introducido pasndolo a maysculas
elNIF = UCase(Me.txtDni.Value)
'Obtenemos el primer carcter
primerCaracter = CStr(Left(elNIF, 1))
'Miramos el primer carcter
Select Case primerCaracter
Case "X" 'El carcter es una X
'Cogemos los valores numricos
elNIF = CStr(Right(elNIF, Len(elNIF) - 1))
'Sacamos la letra
elNIF = "X" & NIF(Val(elNIF))
Case "Y" 'El carcter es una Y
'Sustituimos la Y por un 1
elNIF = "1" & CStr(Right(elNIF, Len(elNIF) - 1))
'Sacamos la letra
elNIF = "Y" & NIF(Val(elNIF))
Case "Z" 'El carcter es una Z
'Sustituimos la Z por un 2
elNIF = "2" & CStr(Right(elNIF, Len(elNIF) - 1))
'Sacamos la letra
1 La BD de ejemplo os la podis bajar aqu
2 Para asignar un nombre a un control lo que debemos hacer es sacar las propiedades de ese control e irnos a la Pestaa Otras
Nombre. Ah escribimos el nombre que queramos.
3 Para generar cdigo debemos sacar las propiedades del control Pestaa Eventos, y nos situamos en la parte blanca a la
derecha del evento que queremos programar. Veremos un pequeo botn de puntos suspensivos. Si hacemos clic sobre l nos
aparecer una ventana que nos pedir qu operacin deseamos realizar. Le indicamos que queremos generar cdigo.

1
Vistame en http://neckkito.siliconproject.com.ar
elNIF = "Z" & NIF(Val(elNIF))
Case Else
'Es un DNI no extranjero
elNIF = NIF(Val(elNIF))
End Select
'Escribimos el valor obtenido en el campo txtDNI
Me.txtDni.Value = elNIF
End Sub

El proceso que realizamos es el siguiente:

Cogemos el valor introducido (elNIF = UCase(Me.txtDni.Value))


Examinamos el primer carcter ( primerCaracter = CStr(Left(elNIF,
1))), convirtindolo en un String (tipo texto) para mayor
seguridad.
A continuacin examinamos si el primer carcter es una X, una Y, una Z o
cualquier otro carcter.
Si fuera cualquier otro carcter (Case Else) llamamos a la funcin NIF() -que veremos un
poco ms abajo-, pasndole slo los valores numricos a travs de la funcin Val()
(elNIF = NIF(Val(elNIF)))
Si, por el contrario, el primer carcter es una letra:
Si es X cogemos los valores numricos y llamamos a la funcin NIF() ( elNIF =
CStr(Right(elNIF, Len(elNIF) 1)))
Si es Y sustituimos esa Y por un 1 y llamamos a la funcin NIF()
Si es Z sustituimos esa Z por un 2 y llamamos a la funcin NIF()
Finalmente, reescribimos el NIF en el cuadro de texto (Me.txtDni.Value = elNIF)

Ahora slo nos falta escribir esa funcin NIF. Para ello, en el mdulo de formulario que nos ha
aparecido en el editor de VB (donde hemos escrito el cdigo anterior), veremos que hay una
lnea que indica Option Compare Database (y quiz tambin Option Explicit).
Inmediatamente debajo de esa (o esas) lneas escribimos lo siguiente:

Private Function NIF(DNI As Long)


NIF = DNI & Mid$("TRWAGMYFPDXBNJZSQVHLCKE", (DNI Mod 23) + 1, 1)
End Function

Como veis, la funcin escribe el DNI y a continuacin le aade la letra correspondiente. Y la


letra correspondiente se saca del listado de letras que podis ver, eligindola en funcin del
resto de la divisin del nmero del DNI entre 23 y aadindole una unidad.

Para entendernos, si el DNI fuera 23 lo que haramos sera

23 / 23 = 1 Resto 0
Resto +1 = 1
1 = la primera letra de la lista T
El NIF sera: 23T

Fcil, no?

Por cierto, esta funcin para obtener la letra del DNI no es ma, sino que la podis encontrar en
una simple bsqueda por Internet.

Y eso es todo. Si ahora escribimos el DNI en nuestro cuadro de texto y pulsamos ENTER nos
aparecer con la letra correspondiente.

2
Vistame en http://neckkito.siliconproject.com.ar
PARA FINALIZAR EL EJEMPLO
Poco ms debo aadir. Slo que espero que el ejemplo os
sea til.

Un saludo, y...

suerte!

3
Vistame en http://neckkito.siliconproject.com.ar

S-ar putea să vă placă și