SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: will_lover en Miércoles 4 de Enero de 2012, 16:25
-
Buenas tardes, junto con saludarles, quisiera pedirles un poco de ayuda.
Tengo el siguiente codigo, que funciona bastante bien, pero hay un punto en el que envía un DESBORDAMIENTO ... quien me puede ayudar a resolver esto porfis... se agradece.
Private Sub txtRut_Change()
If txtRut.Text = "" Then
txtDigito.Text = ""
End If
Dim Vari1, Vari2, Vari3 As Integer
Vari3 = 2
For I = 0 To Len(txtRut) - 1 ' en esta linea envía el DESBORDAMIENTO!.
If Left(Right(txtRut, I + 1), 1) <> "." Then
Vari1 = Vari1 + Left(Right(txtRut, I + 1), 1) * Vari3
Vari2 = Vari1 Mod 11
Select Case Vari2
Case 0
txtDigito.Text = "0"
Case 1
txtDigito.Text = "K"
Case Else
txtDigito.Text = 11 - Vari2
End Select
If Vari3 = 7 Then
Vari3 = 2
Else
Vari3 = Vari3 + 1
End If
End If
Next
End Sub
-
Es porque el valor devuelto a tu variable I es demaciado grande cambia el tipo de dato de la variable I a un tipo long
-
OK... muchisimas gracias..
pero te puedo molestar otra vez¿?¿' sorry... pero mi experiencia programando no ha sido mucha..
mira en esta linea : CAL1 = CAL1 + Left(Right(txtRut, I + 1), 1) * CAL3 me dice "Error 13' en tiempo de ejecución LOS TIPOS NO COINCIDEN-" Y SI TE DAS CUENTA EN EL CODIGO QUE PEDI AYUDA ANTERIORMENTE... CAL1, CAL2, CAL3 SON DE TIPO INTEGER... QUE ESTA MAL AHI¿?¿
mUCHAS GRACIAS..
;)
-
Es porque estas intentando sumar una valor integer ( tus variables ) y una variable de tipo cadena...
Si digamos que tienes una cadena de este tipo: "abcd123"
y quieres hacer una operacion aritmetica con el 2 que se encuentre en la cadena, tenes que usar la funcion CInt para
que lo pueda convertir a valor entero y podas hacer operaciones aritmeticas
-
aun no me funciona.. :(... jejejje pero gracias... lo seguiré intentando!. :D
-
Me dices que son de tipo integer las variables vari1,
vari2, vari3
dices que aqui da error:
Vari1 = Vari1 + Left(Right(txtRut, I + 1), 1) * Vari3
y dices que no funciona entonces debe ser porque el caracter que se obtiene despues de las operaciones:
Left(Right(txtRut, I + 1), 1) no es un alfanumerico.. que quieres hacer ?
-
ahi es donde me envia el error
-
codigo.
-
Si debe ser porque el caracter obtenido de las operaciones left y rigth no es un caracter alfanumerico!
osea en la caja de texto ingresas letras no numeros
-
Lindo precioso... lo solucioné... muchas gracias... me ayudaste a encender la ampolleta.. jhajajajja
toy feliz feliz...
sabes lo que era¿?¡
Private Sub txtRut_Change()
If txtRut.Text = "" Then
txtdigito.Text = " ?
[/b]" ' Esto era.. simplemente dejar el campo de texto "" asi... vacio...
End If
Dim CAL1, CAL2, CAL3 As Integer
Dim I As Long
CAL3 = 2
For I = 0 To Len(txtRut) - 1
If Left(Right(txtRut, I + 1), 1) <> "." Then
CAL1 = CAL1 + Left(Right(txtRut, I + 1), 1) * CAL3
CAL2 = CAL1 Mod 11
Select Case CAL2
Case 0
txtdigito.Text = "0"
Case 1
txtdigito.Text = "K"
Case Else
txtdigito.Text = 11 - CAL2
End Select
If CAL3 = 7 Then
CAL3 = 2
Else
CAL3 = CAL3 + 1
End If
End If
Next
End Sub
como no lo vi antes... ... muchas gracias.... eres un sol... :)