Limpiar campos Formulario pestañas |
Responder |
Autor | |
JoanG
Colaborador Unido: 11/Septiembre/2006 Localización: Catalunya Estado: Sin conexión Puntos: 1090 |
Tema: Limpiar campos Formulario pestañas Enviado: 16/Junio/2020 a las 19:13 |
Hola a todos, estoy batallando con un codigo para limpiar los textbox. combos, etc. de una pestaña de un formulario y al ejecutarlo, me dice que no coinciden los tipos, y no se como corregirlo, me podeis ayudar. gracias:
Dim ctl As Control Dim tabCt3 As TabControl Set tabCt3 = Forms!frmEleccions!TabCtl201.Pages(3) For Each ctl In tabCt3 Select Case ctl.ControlType Case acTextBox, acComboBox, acListBox, acCheckBox If ctl.ControlSource = "" Then ctl.value = Null End If Case Else End Select Next ctl
|
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 16/Junio/2020 a las 21:21 |
Hola!
Prueba pasar lo que está en rojo donde la línea azul:- Dim ctl As Control Dim tabCt3 As TabControl Set tabCt3 = Forms!frmEleccions!TabCtl201.Pages(3) For Each ctl In tabCt3 Select Case ctl.ControlType.Pages(3) Case acTextBox, acComboBox, acListBox, acCheckBox If ctl.ControlSource = "" Then ctl.value = Null End If Case Else End Select Next ctl Por otro lado no entiendo que quieres hacer con esta línea:- If ctl.ControlSource = "" |
|
Un Saludo.
|
|
JoanG
Colaborador Unido: 11/Septiembre/2006 Localización: Catalunya Estado: Sin conexión Puntos: 1090 |
Enviado: 16/Junio/2020 a las 22:03 |
Gracias mounir, ahora me sale "se requiere un objeto", y sí lo del ctl.ControlSource, es un error mio, llevo muchos intentos y se me ha escapado. No le acabo de ver la lógica; creía que lo tenia todo bien pero veo que no.
Dim ctl As Control Dim tabCt3 As TabControl Set tabCt3 = Forms!frmEleccions!TabCtl201 For Each ctl In tabCt3 Select Case ctl.ControlType.Pages(3) Case acTextBox, acComboBox, acListBox, acCheckBox ctl.value = Null Case Else End Select Next ctl
|
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 16/Junio/2020 a las 23:22 |
Hola!
Así funciona pero limpia todas las páginas:-
Seguiré investigando o a ver si hay alguien que sepa solucionarlo. Editado por mounir - 16/Junio/2020 a las 23:43 |
|
Un Saludo.
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 17/Junio/2020 a las 12:28 |
Hay que evaluar la propiedad Parent del control. Pero creo que después de discriminar el ControlType.
|
|
JoanG
Colaborador Unido: 11/Septiembre/2006 Localización: Catalunya Estado: Sin conexión Puntos: 1090 |
Enviado: 17/Junio/2020 a las 13:04 |
Gracias Xavi, sí borra los textbox, no los combobox, pero de todas las pestañas
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 17/Junio/2020 a las 13:17 |
En cuanto pueda hago pruebas (voy pilladisimo de tiempo)
|
|
JoanG
Colaborador Unido: 11/Septiembre/2006 Localización: Catalunya Estado: Sin conexión Puntos: 1090 |
Enviado: 17/Junio/2020 a las 13:38 |
Gracias Xavi, yo también voy haciendo pruebas tratando de entender la lógica y no me sale, porque el If del ctl.Parent.Name és igual al de la pestaña que estan los textbox que quiero baciar, por tanto solo tendria que ejecutar la acción si se esta dentro de esa pestaña, pero no, se sale y lo vacia todo, a excepción de los Combo, pero eso de momento es el 2º problema
|
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13990 |
Enviado: 17/Junio/2020 a las 14:40 |
Tienes que recorrer la colección de controles de la página. En el ejemplo que me he hecho, he creado un control ficha TabCtl18 que tiene dos páginas, llamadas P1 y P2, con esto se limpian sólo los de la P1:
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 17/Junio/2020 a las 15:35 |
Pues si, muy cierto. Uno que se obceca en recorrer los controles del TabControl cuando se pueden recorrer los de la página...
|
|
JoanG
Colaborador Unido: 11/Septiembre/2006 Localización: Catalunya Estado: Sin conexión Puntos: 1090 |
Enviado: 17/Junio/2020 a las 18:12 |
Gracias Mihura, lo he provado y me da el error "El objeto no admite esta propiedad o método" en ctl = "", lo he provado con ctl.Text = vbNullString y ctl.Value = "" y también me da el mismo error. Tengo el Control Ficha "TabCtl201" con 4 pàginas y la que intento limpiar és la 4ª pestaña que llamo P3. Sí a tí te va bién, entonces ya me preocupa mucho que a mí no me vaya bien. Para probar he puesto tú código en un botón el pie del Formulario, pero también en otro botón prueba en el mísmo Formulario, y el mismo error: error 438 en tiempo de ejecución
Editado por JoanG - 17/Junio/2020 a las 18:33 |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13990 |
Enviado: 17/Junio/2020 a las 18:28 |
Joan, yo lo que pretendía 'decir' es que tenías que seguir los controles de la página ... obviamente tendrás que chequear que sea un campo de texto antes de darle valor, porque si es un botón de comando (por ejemplo) te va a cascar.
Algo así como: Dim ctl As Control For Each ctl In Me.P1.Controls Select Case ctl.ControlType
Case acTextBox, acComboBox
ctl.Value = ""
End Select Next ... esto va sin probar ....
|
|
JoanG
Colaborador Unido: 11/Septiembre/2006 Localización: Catalunya Estado: Sin conexión Puntos: 1090 |
Enviado: 17/Junio/2020 a las 18:40 |
Gracias Mihura, tal cual he puesto tu código solo cambiando la pestaña mia, la P3, y sí, vacia los textbox de todo el formulario, no solo el de la P3, pero además he observado que los checkbox de las otras páginas no los vacia
|
|
JoanG
Colaborador Unido: 11/Septiembre/2006 Localización: Catalunya Estado: Sin conexión Puntos: 1090 |
Enviado: 17/Junio/2020 a las 18:48 |
Perfecto, Mihura, sí que funciona, he encontrado un problema que me volvia loco, me vaciaba un campo de P3, que tambén estava en P0, y claro, al vaciarlo de P3, ya no se veia en P0, y esto me desconcertava, miraré de darle otro enfoque a eso. Muchísimas Gracias a todos por ayudarme (Mounir, Xavi i Mihura). Podéis cerrar el hilo
Editado por JoanG - 17/Junio/2020 a las 18:50 |
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |