12/11/2003, 18:06
|
| Moderador | | Fecha de Ingreso: febrero-2002 Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 10 meses Puntos: 50 | |
Mira.. siguiendo la lógica que tienes en tu VBscript, para net es casi lo mismo...lo que hice fue tener 1 cuadro de texto (txtRut), un boton y una etiqueta (label1) donde me desplegará cualquier tipo de error.
Y el código sería de ésta manera. Cita: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Valida_Rut(txtRut.Text)
End Sub
y las funciones: Cita: Function StrToCifra(ByVal str As String) As String
Dim str_Aux As String
Dim V_Indice1, V_Indice2 As Integer
V_Indice1 = Len(str)
V_Indice2 = 0
str_Aux = ""
While V_Indice1 > 0
If (V_Indice2 = 3 And V_Indice1 >= 1) Then
str_Aux = str_Aux & "."
V_Indice2 = 0
End If
str_Aux = str_Aux & Mid(str, V_Indice1, 1)
V_Indice1 = V_Indice1 - 1
V_Indice2 = V_Indice2 + 1
End While
V_Indice1 = Len(str_Aux)
str = ""
While V_Indice1 > 0
str = str & Mid(str_Aux, V_Indice1, 1)
V_Indice1 = V_Indice1 - 1
End While
Return str
End Function
Function Remove_Char(ByVal Str As String, ByVal Ch As String) As String
Dim str_Aux As String
Dim V_Indice1, V_Indice2 As Integer
V_Indice1 = Len(Str)
V_Indice2 = 1
While V_Indice2 <= V_Indice1
If Ch <> Mid(Str, V_Indice2, 1) Then
str_Aux = str_Aux & Mid(Str, V_Indice2, 1)
End If
V_Indice2 = V_Indice2 + 1
End While
Return str_Aux
End Function
Function Valida_Rut(ByVal Texto As String)
Dim RUT_Len As Integer
Dim rut As String
Dim ACUM
Dim Formulario As String = txtRut.Text
rut = Remove_Char(UCase(Texto), ".")
rut = Remove_Char(rut, " ")
RUT_Len = Len(rut)
If RUT_Len = 0 Then
MsgBox("Debe Ingresar RUT.", 48, "Error")
Valida_Rut = False
Exit Function
End If
Dim RUT_DV As String = Mid(rut, RUT_Len, RUT_Len)
If RUT_DV = "" Then
Label1.Text = "Ingrese RUT con su digito verificador"
Valida_Rut = False
Exit Function
End If
Dim pos_guion As Integer = InStr(rut, "-")
If pos_guion = 0 Then
pos_guion = RUT_Len
End If
Dim RUT_RUT As String = "000000000000000" & Mid(rut, 1, pos_guion - 1)
If (RUT_RUT = "") Then
Label1.Text = "Debe Ingresar RUT valido."
Valida_Rut = False
Exit Function
End If
If Not IsNumeric(RUT_RUT) Then
Label1.Text = "El RUT ingresado posee caracteres no válidos"
Valida_Rut = False
Exit Function
End If
Dim RUT_RUT_Len As Integer = Len(RUT_RUT)
ACUM = 0
Dim Factor As Integer = 2
While RUT_RUT_Len > 0
If Factor > 7 Then
Factor = 2
End If
ACUM = ACUM + Factor * Mid(RUT_RUT, RUT_RUT_Len, 1)
RUT_RUT_Len = RUT_RUT_Len - 1
Factor = Factor + 1
End While
Dim G As Integer = ACUM Mod 11
Dim h As Integer = 11 - G
Dim veri As String
Select Case h
Case 10
veri = "K"
Case 11
veri = "0"
Case Else
veri = h
End Select
If Trim(veri) <> Trim(RUT_DV) Then
Label1.Text = "El Dígito Verificador ingresado no corresponde al RUT."
Valida_Rut = False
Exit Function
End If
txtResultado.Text = Right(StrToCifra(RUT_RUT) & "-" & RUT_DV, 12)
Valida_Rut = True
End Function Si te das cuenta casi todo se queda de la misma manera.. pero sería cosa que lo checaras ok..??
Saludos y suerte |