Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/12/2008, 10:56
Avellaneda
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: ¿Como validar Rut?

Cita:
Iniciado por Strok3R Ver Mensaje
Hola, me gustaria saber cómo hacer para verificar si el Rut ingresado en un textbox es real. Quiero validarlo.
Trabajo con SQL Server 2005 y el atributo Rut es "varchar (10)" (creo que es necesario que sepan eso tambien).Solo 10 caracteres ya que es la cantidad de caracteres que posee un rut.

Ojala puedan ayudarme como siempre lo hacen.
Saludos
Hola, según tengo entendido el Rut chileno se compone de 8 dígitos mas un guión (-) mas un caracter verificador de los 8 dígitos.

El verificador se obtiene sumando la multiplicación de la siguiente secuencia de números 3 2 7 6 5 4 3 2 por cada uno de los dígitos de izquierda a derecha y el resultado se divide entre 11 y el resto de esta división se le sustrae a 11 y ese es el verificador. Si este es 10 se convierte en "K" y si es 11 en "0".

Partiendo de esta premisa podemos crear una función como ésta (al digitar el octavo número en un TextBox lo transforma en el Rut completo)

Código:
Public Function ValidaRut(ByVal ElNumero As String) As String
        Dim Resultado As String = ""
        Dim Multiplicador As Integer = 2
        Dim iNum As Integer = 0
        Dim Suma As Integer = 0

        For i As Integer = 8 To 1 Step -1
            iNum = Mid(ElNumero, i, 1)
            Suma += iNum * Multiplicador
            Multiplicador += 1
            If Multiplicador = 8 Then Multiplicador = 2
        Next
        Resultado = CStr(11 - (Suma Mod 11))
        If Resultado = "10" Then Resultado = "K"
        If Resultado = "11" Then Resultado = "0"
        Return ElNumero & "-" & Resultado
    End Function
Llamamos a la función así

Código:
Private Sub TxtRut_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtRut.TextChanged
        If TxtRut.TextLength = 8 Then TxtRut.Text = ValidaRut(TxtRut.Text)
    End Sub
Para validar que lo introducido en el TextBox sólo sean números:
Código:
Private Sub TxtRut_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtRut.KeyPress
        e.Handled = ValidaChar(e.KeyChar)
    End Sub

    Public Function ValidaChar(ByVal car As Char) As Boolean
        ' sólo admitimos números y tecla retroceso
        If Char.IsNumber(car, 0) = True Or Char.IsControl(car) = True Then
            Return (False)
        Else
            Return (True)
        End If
    End Function
y para que no se puedan introducir mas de 10 caracteres en el TextBox, le pones la propiedad MaxLength = 10