** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Limpiar campos Formulario pestañas
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoLimpiar campos Formulario pestañas

 Responder Responder
Autor
Mensaje
JoanG Ver desplegable
Colaborador
Colaborador


Unido: 11/Septiembre/2006
Localización: Catalunya
Estado: Sin conexión
Puntos: 1090
Enlace directo a este mensaje 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
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje 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.
Arriba
JoanG Ver desplegable
Colaborador
Colaborador


Unido: 11/Septiembre/2006
Localización: Catalunya
Estado: Sin conexión
Puntos: 1090
Enlace directo a este mensaje 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
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 16/Junio/2020 a las 23:22
Hola!

Así funciona pero limpia todas las páginas:-

Dim ctl As Control
Dim tabCt3 As TabControl

Set tabCt3 = Forms!frmEleccions!TabCtl201
tabCt3 = 2 ' enviamos foco a la página 3
For Each ctl In tabCt3
   Select Case ctl.ControlType
   Case acTextBox, acComboBox, acCheckBox
        ctl.Value = Null
   End Select
Next ctl


Seguiré investigando o a ver si hay alguien que sepa solucionarlo.

Editado por mounir - 16/Junio/2020 a las 23:43
Un Saludo.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje 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.

Function LimpiaPestaña(intNumPestaña As Integer)
Dim ctl As Control
For Each ctl In Me!TabCtl201
  Select Case ctl.ControlType
    Case acTextBox, acComboBox
      If ctl.Parent.Name = Me!TabCtl201.Pages(intNumPestaña).Name Then
        ctl.Value = Null
      End If
    Case Else
  End Select
Next
End Function
Xavi, un minyó de Terrassa

Mi web
Arriba
JoanG Ver desplegable
Colaborador
Colaborador


Unido: 11/Septiembre/2006
Localización: Catalunya
Estado: Sin conexión
Puntos: 1090
Enlace directo a este mensaje Enviado: 17/Junio/2020 a las 13:04
Gracias Xavi, sí borra los textbox, no los combobox, pero de todas las pestañas

Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 17/Junio/2020 a las 13:17
En cuanto pueda hago pruebas (voy pilladisimo de tiempo)
Xavi, un minyó de Terrassa

Mi web
Arriba
JoanG Ver desplegable
Colaborador
Colaborador


Unido: 11/Septiembre/2006
Localización: Catalunya
Estado: Sin conexión
Puntos: 1090
Enlace directo a este mensaje 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

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Enlace directo a este mensaje 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:

Dim ctl As Control
    For Each ctl In Me.P1.Controls
        Debug.Print ctl.Name
        ctl = ""
    Next



Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje 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...
Xavi, un minyó de Terrassa

Mi web
Arriba
JoanG Ver desplegable
Colaborador
Colaborador


Unido: 11/Septiembre/2006
Localización: Catalunya
Estado: Sin conexión
Puntos: 1090
Enlace directo a este mensaje 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
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Enlace directo a este mensaje 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 ....
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
JoanG Ver desplegable
Colaborador
Colaborador


Unido: 11/Septiembre/2006
Localización: Catalunya
Estado: Sin conexión
Puntos: 1090
Enlace directo a este mensaje 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
Arriba
JoanG Ver desplegable
Colaborador
Colaborador


Unido: 11/Septiembre/2006
Localización: Catalunya
Estado: Sin conexión
Puntos: 1090
Enlace directo a este mensaje 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
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable