Estimado:
estoy recién comenzando a realizar una pequeña aplicación para registrar pacientes y camas de un pensionado en un hospital y necesito su ayuda o consejo para solucionar el tema, mas que la validación del rut, sino del formato del textbox con el rut chileno, he tenido varias validaciones tanto como para que me de el dv(dígito verificador) automáticamente o digitar el dv en el textbox.(esto lo hago todo en un textbox).-
muy bien el tema es el siguiente:
teniendo la caja de textbox, valida los rut, tanto con los 8 primeros dígitos y su dv, o con los 7 primeros dígitos con su dv.
bien, mi problema, y me pongo en el lado del usuario es validar o limitar el ingreso de datos a esta caja, aplico que en la caja de texto solo me valide la digitación de numero del 0-9 la "k" minúscula y "k" mayúscula y una cantidad de 10 caracteres como máximo(maxlength)
había pensado reemplazar el textbox por un maskedtextbox y darle la siguiente mascara 00000000-0, el cual me deja que valide ingresar solo numero y evito asi cualquier otro caracter que pueda truncar mi programa.-
pero con todo esto por ejemplo puedo digitar esto y se me caerá el programa:
ejemplo:
dentro del textbox -------- se cae el programa
1----9 se cae el programa
16136476- se cae el programa etc
16136-475- se cae el programa
y así una seguidilla de combinaciones que estén dentro de estos caracteres y que no cumplen con el modelo del rut, se va a caer, me entienden?
que tendría que mejorar, mi código de validación del rut, la caja de textboc o maskedtexbox?
y existe la posibilidad de que en maskedtextbox al dejarlo con la mascara 00000000-0 el cual se muestra ________-_ y al ingresar un rut con 8 dígitos ejem 16136476-2 cumple con la condición y valida el rut, pero al ingresar un rut de 7 dígitos ejemplo 5849756-8 me quedaría así: 5849756_-8
como hago que al ingresar ese rut automáticamente se mueva después del guion? y quedara 5849756-8
dejo mi código de validación de rut
Código:
Module validarut2
Public Function valida_rut(ByVal ci As String) As Boolean
Dim cont, i, sum As Integer
Dim car, digito, dig, rut As String
Dim largo As Integer
largo = Len(ci)
cont = 2
rut = Mid(ci, 1, largo - 2)
digito = Mid(ci, largo, 1)
For i = Len(rut) To 1 Step -1
car = Mid(rut, i, 1)
sum = sum + CInt(car) * cont
cont = cont + 1
If cont = 8 Then
cont = 2
End If
Next
dig = 11 - (sum Mod 11)
If dig = 10 And UCase(digito) = "K" Then
valida_rut = True
ElseIf dig = 11 And digito = 0 Then
valida_rut = True
ElseIf CStr(dig) = digito Then
valida_rut = True
Else
valida_rut = False
End If
End Function
End Module
Y Como llamo a la validacion con un boton
Código:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnbuscar.Click
Dim veri As Boolean
If txtrut.Text <> "" Then
veri = valida_rut(txtrut.Text)
If veri = False Then
MsgBox("Ingrese rut valido")
txtrut.Text = ""
ElseIf veri = True Then
Dim consulta sql.....................
bueno espero buena onda y ojala me puedan ayudar con esta duda.-
atte
Esteban