Problemas para calcular letra de NIF y NIE en Access

Quisiera saber cómo calcular la letra de un campo DNI en Access 2007 y colocar el resultado en su registro correspondiente, tanto para extranjeros como nacionales.

No se programar en VB ni estoy muy ducha con los Macros, sólo se me ocurrió poner un hipervínculo a una WEB que lo calcule y meter el resultado a mano, pero eso es una chapuza.

Agradezco de antemano toda la ayuda que me puedan dar porque he probado varios programas que he visto en internet y siempre me da algún error.

1 Respuesta

Respuesta
3

Voy a suponer que escribes el DNI en el campo [txtDNI], que es coincidente con el campo que te guarda el DNI con la letra.

En tu formulario, en ese campo donde escribes el DNI, sacas sus propiedades y te vas a la pestaña Eventos -> Después de actualizar, y le generas el siguiente código:

...

Private Sub...

Dim elNIF As String
Dim primerCaracter As String
'Cogemos el valor introducido pasándolo a mayúsculas
elNIF = UCase(Me.txtDni.Value)
'Obtenemos el primer carácter
primerCaracter = Left(elNIF, 1)
'Miramos el primer carácter
Select Case primerCaracter
Case "X" 'El carácter es una X
'Cogemos los valores numéricos
elNIF = CStr(Right(elNIF, Len(elNIF) - 1))
'Sacamos la letra
elNIF = "X" & NIF(Val(elNIF))
Case "Y" 'El carácter 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 carácter es una Z
'Sustituimos la Z por un 2
elNIF = "2" & CStr(Right(elNIF, Len(elNIF) - 1))
'Sacamos la letra
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

...

Para escribir ese código se te habrá abierto el editor de VB en el módulo asociado en el formulario. Entonces ahí, bajo la primera línea que te aparece (Option Explicit), escribes la siguiente función:

...

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

...

Ahora, cuando escribas un DNI en el campo correspondiente automáticamente se te sustituirá por el NIF.

Para un NIE tendrás que escribir la primera letra del NIE y la numeración, y el código te sacará la última letra que corresponda.

Hola neckkito,

Antes de nada, disculpe la tardanza en responder, no había tenido la oportunidad de probar el programa, el cual me ha funcionado a la primera, además, de todos los programas que probé este ha sido el más conciso y claro.

Muchísimas gracias por su ayuda.

Saludos!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas