Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Limpiar Textbox evento change

Estas en el tema de Limpiar Textbox evento change en el foro de Visual Basic clásico en Foros del Web. Hola!!!! Tengo un problema con un textbox a la hora de limpiarlo. Estoy haciendo un alta de registros donde en un textbox en evento change ...
  #1 (permalink)  
Antiguo 13/05/2011, 23:17
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Limpiar Textbox evento change

Hola!!!! Tengo un problema con un textbox a la hora de limpiarlo.

Estoy haciendo un alta de registros donde en un textbox en evento change le hago hacer una multiplicación para que el resultado se muestre en otro textbox mientras voy poniendo el dato en el textbox evento change. Una vez finalizada la carga de los datos, adentro de un botón "Alta de registro" al final del código, una vez finalizado el código con todos los datos subidos ya, pongo (txtCantidaddehoras.text = " ") para limpiar los textbox y me aparece un cartel de error: "Error 13' en tiempo de ejecución. No coinciden los títulos". Hago la ejecución con el debug y veo que cuando llego a la línea de (txtCantidaddehoras.text = " ") se dirige hacia el código dentro del textbox a volver a hacer la multiplicación y me tira error.
El alta del registro lo puedo hacer igual poniendo la multiplicación dentro del botón de "Alta de registro" pero yo quería ver si había alguna manera que me haga la cuenta antes de cliquear el botón de "Alta..." y subir el registro.

Saludos!!!
  #2 (permalink)  
Antiguo 14/05/2011, 07:19
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: Limpiar Textbox evento change

El error lo muestra porque intenta multiplicar el caracter espacio que no es un numero.
Lo primero que tienes que hacer es que cuando uses el valor de un textbox te asegures antes de que contienen numeros.
El fallo mas gordo lo tienes cuando permites que la sub se llame a si misma.
Si no puedes evitar que la sub se llame, como es tu caso, lo que tienes que hacer es poner un flag o aviso que impida que se procese el código de la sub cuando es ella la que se llama a si misma o simplemente cuando la sub se esta ejecutando.
Para eso puedes usar una variable estática.

Código vb:
Ver original
  1. Private Sub Text1_Change()
  2.  
  3.   Static EnUso As Boolean
  4.   If EnUso=True Then Exit Sub
  5.   EnUso=True
  6. ...
  7. ...
  8. el codigo de la sub
  9. ...
  10. ...
  11.   EnUso=False
  12.  
  13. End Sub
De todas formas dentro de la sub cuando uses el textbox convierte el texto al formato numérico:
Resultado=1500 * Val(Text1)
Si el texto no contiene numeros el valor devuelto es 0, que no genera errores.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 14/05/2011 a las 07:28
  #3 (permalink)  
Antiguo 14/05/2011, 17:03
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Respuesta: Limpiar Textbox evento change

Cita:
Iniciado por pkj Ver Mensaje
El error lo muestra porque intenta multiplicar el caracter espacio que no es un numero.
Lo primero que tienes que hacer es que cuando uses el valor de un textbox te asegures antes de que contienen numeros.
El fallo mas gordo lo tienes cuando permites que la sub se llame a si misma.
Si no puedes evitar que la sub se llame, como es tu caso, lo que tienes que hacer es poner un flag o aviso que impida que se procese el código de la sub cuando es ella la que se llama a si misma o simplemente cuando la sub se esta ejecutando.
Para eso puedes usar una variable estática.

Código vb:
Ver original
  1. Private Sub Text1_Change()
  2.  
  3.   Static EnUso As Boolean
  4.   If EnUso=True Then Exit Sub
  5.   EnUso=True
  6. ...
  7. ...
  8. el codigo de la sub
  9. ...
  10. ...
  11.   EnUso=False
  12.  
  13. End Sub
De todas formas dentro de la sub cuando uses el textbox convierte el texto al formato numérico:
Resultado=1500 * Val(Text1)
Si el texto no contiene numeros el valor devuelto es 0, que no genera errores.

El código funciona pero se mantiene el dato en el textbox y no se limpia para un alta de registro siguiente.

No entiendo lo de convertir el texto a formato numérico si en el textbox que uso estoy colocando números para la cuenta no letras.

Saludos!!!
  #4 (permalink)  
Antiguo 15/05/2011, 02:12
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: Limpiar Textbox evento change

Sin ver tu código no podemos saber lo que falla. Si no se borra el dato es porque no pasa por la linea donde lo cargas con un espacio " ".

Sobre el textbox, la prueba la tienes en que si escribes en el un solo caracter y no es un numero te va a saltar siempre ese error.
Puedes controlar el error o controlar el contenido.
Otro modo es controlarlo al entrar en la sub:

If IsNumeric(Text1)=False Then Exit Sub

Asi si no es un numero se sale de la sub y no se manipula.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #5 (permalink)  
Antiguo 15/05/2011, 04:15
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Respuesta: Limpiar Textbox evento change

Perdón por no poner el código. Acá está la multiplicación dentro del textbox:

Private Sub txtCantidaddehoras_Change()

txtSueldoacobrar.Text = txtCantidaddehoras.Text * 5

End Sub


Y acá el alta del registro con la limpieza de los textbox posteriormente donde aparece el error en la línea de la limpieza del txtCantidaddehoras que me vuelve a llamar la sub y me aparece el error:

sql = "select * from Movimientos where DNI = '" & txtDni.Text & "'"
If Not Conectar() Then Exit Sub
Set Rs = Cn.Execute(sql)
If Rs.EOF Then
sql = " insert into Movimientos (Apenom, DNI, antiguedad, Nacionalidad, CantidadHoras, SueldoACobrar) values ( '" & txtNombredelempleado.Text & "', " & txtDni.Text & ", " & txtAntiguedad.Text & ", '" & cmbNacionalidad & "', " & txtCantidaddehoras & ", " & txtSueldoacobrar.Text & ")"
End If


MsgBox "Registro agregado"
txtNombredelempleado.Text = ""
txtDni.Text = ""
txtAntiguedad.Text = ""
cmbNacionalidad = ""
txtCantidaddehoras.Text = ""
txtSueldoacobrar.Text = ""
txtNombredelempleado.SetFocus
  #6 (permalink)  
Antiguo 16/05/2011, 09:28
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 15 años, 2 meses
Puntos: 47
Respuesta: Limpiar Textbox evento change

Hola!!
Yo limpio los Textboxes pasando EMPTY en vez de " ". Asi: txtDatos.Text=Empty

Intenta tu CODE asi:

Código vb:
Ver original
  1. Private Sub cmd_Click()
  2.     txt.Text = Empty
  3. End Sub
  4.  
  5. Private Sub txt_Change()
  6.     If txt.Text = Empty Then Exit Sub
  7.     txt2.Text = txt.Text * 5
  8. End Sub
  #7 (permalink)  
Antiguo 16/05/2011, 09:49
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 14 años
Puntos: 1
Respuesta: Limpiar Textbox evento change

Cita:
Iniciado por lokoman Ver Mensaje
Hola!!
Yo limpio los Textboxes pasando EMPTY en vez de " ". Asi: txtDatos.Text=Empty

Intenta tu CODE asi:

Código vb:
Ver original
  1. Private Sub cmd_Click()
  2.     txt.Text = Empty
  3. End Sub
  4.  
  5. Private Sub txt_Change()
  6.     If txt.Text = Empty Then Exit Sub
  7.     txt2.Text = txt.Text * 5
  8. End Sub
Uy que fácil era!!! Gracias!!
  #8 (permalink)  
Antiguo 16/05/2011, 10:09
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 15 años, 2 meses
Puntos: 47
Respuesta: Limpiar Textbox evento change


Etiquetas: evento, limpiar, textbox
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:27.