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:
Y Como llamo a la validacion con un botonModule 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
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