Visual Basic.NET - Validar dni

   
Vista:

Validar dni

Publicado por juan (2 intervenciones) el 09/02/2009 00:13:45
Hola.
Tengo un textbox con una mascar para el dni y quiero verificar quela letra del dni es correcta y me dice siempre que que esta mal. Aqui os dejo el codigo a ver si me podeis ayudar.
Private Sub D_N_IMaskedTextBox_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles D_N_IMaskedTextBox.Validating
Dim letras As String = "TRWAGMYFPDXBNJZSQVHLCKE"
Dim nifnum As Integer
Dim nif As String = D_N_IMaskedTextBox.Text
Dim valido As Boolean = True

If Not System.Text.RegularExpressions.Regex.IsMatch(nif, "^d{8}[" & letras & "] $") Then
valido = False
Else

nifnum = Integer.Parse(nif.Substring(0, nif.Length - 1))
If Not (nif(8) = letras(nifnum Mod 23)) Then
valido = False
End If
End If
If Not valido Then
e.Cancel = True
ErrorProvider1.SetError(D_N_IMaskedTextBox, "El D.N.I introducido no es correcto")

Else
e.Cancel = False
ErrorProvider1.SetError(D_N_IMaskedTextBox, Nothing)

End If
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Validar dni

Publicado por P3L30N2009 (6 intervenciones) el 09/02/2009 17:49:14
mira este enlace

http://www.elguille.info/NEt/dotnet/comprobar_validar_NIF_CIF_calcular_letra_NIF.aspx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar dni

Publicado por pool (1 intervención) el 29/09/2009 02:08:19
DNI deve de estar junto no separado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Validar dni

Publicado por Cesar (1 intervención) el 02/12/2010 14:58:07
Public Class CNif

Private _dni As Integer
Private _letra As String

Sub New(ByVal dni As Integer)
_dni = dni
Calculaletra()
End Sub

Public Function DameLetra() As String
Return _letra
End Function

Private Sub Calculaletra()
Dim Resto As Integer
Resto = CInt(_dni) Mod 23
Select Case (Resto)
Case 0
_letra = "T"
Case 1
_letra = "R"
Case 2
_letra = "W"
Case 3
_letra = "A"
Case 4
_letra = "G"
Case 5
_letra = "M"
Case 6
_letra = "Y"
Case 7
_letra = "F"
Case 8
_letra = "P"
Case 9
_letra = "D"
Case 10
_letra = "X"
Case 11
_letra = "B"
Case 12
_letra = "N"
Case 13
_letra = "J"
Case 14
_letra = "Z"
Case 15
_letra = "S"
Case 16
_letra = "Q"
Case 17
_letra = "V"
Case 18
_letra = "H"
Case 19
_letra = "L"
Case 20
_letra = "C"
Case 21
_letra = "K"
Case 22
_letra = "E"
End Select
End Sub
End Class
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Validar dni

Publicado por Miguel (56 intervenciones) el 15/11/2016 13:58:55
Copia esta función, pero como no tengo el algoritmo para empresas y comunidades la función solo controla particulares.

1
2
3
4
5
6
7
8
9
10
11
12
Public Function miDni(ByVal Sujeto As String, ByVal esdni As String) As String
    If Sujeto = "Particular" Then
        Dim cadena As String = "TRWAGMYFPDXBNJZSQVHLCKE"
        Dim Dni As Integer = CInt(esdni)
        Dim posi As Short = CShort(Dni Mod 23)
        Dim letra As Char = CChar(cadena.Substring(posi, 1))
        miDni = Mid(esdni, 1, 2) & "." & Mid(esdni, 3, 3) & "." & Mid(esdni, 6, 3) & " " & letra
    ElseIf Sujeto = "Empresa" Or Sujeto = "Comunidad" Then
        miDni = Izquierda(UCase(Dni), 1) & " " & Mid(Dni, 2, 2) & "." & Mid(Dni, 4, 3) & "." & Mid(Dni, 7, 3)
    End If
    Return miDni
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar