Cita:
Iniciado por Strok3R
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