Crear botón para limpiar combobox y cuadro de texto

Tengo un formulario el cual tiene algunos filtros (dos cuadros combinados y 4 cuadros de texto) y dos botones, uno de búsqueda y otro para cerrar el formulario, cada uno con su respectiva macro. Me gustaría añadir un botón el cual me limpie los filtros luego de buscar para no tener que hacerlo manualmente pero no logro hacerlo. Mi formulario no tiene origen de registro pero si tiene la información que coge de la tabla y una consulta mediante un 'procedimiento de evento al cargar'

Intente añardile una macro con el comando de actualizar pero no funcionó. Evidentemente algo estoy haciendo mal.

3 Respuestas

Respuesta
2

Entiendo que se refiere es a "limpiar" los controles, pruebe con este código en un botón

    Dim ctrl As Control
    For Each ctrl In Me.Controls
      If ctrl.ControlType = acTextBox Or ctrl.ControlType = acComboBox Then
         ctrl = ""
      End If
    Next

¡Gracias! 

Excelente Eduardo. Me funcionó! Gracias a todos por responder.

Hola Eduardo. Me surgió un problema. Luego de limpiar, al intentar ingresar nuevos datos y darle a buscar, me aparece este cartel y no me genera el informe

Luego de quitar ambos carteles, la búsqueda ya no funciona.

El código que le presenté es la forma más practica de limpiar controles, imagínese que fueran 20 o 30 controlos, ! Va a limpiar uno por uno "". Al código le hace falta al final:

Me. Requery

Inclusive cambie

ctrl = Null

Por

! No lo haga como individual esta no es la forma practica!

Cambie  ctrl="" por

ctrl=Null

Respuesta
1

Un formulario independiente por definición no tiene origen de datos (RecordSource).

Lo que si aprecio es que hay un bucle para cargar los valores de un Recordset del que solo se utilizara un único registro (el primero sea cual fuere) se le puede indicar a Access que solo se desea uno (TOP 1) para no desperdiciar los preciados y escasos recursos.

Sql = "Select TOP 1 * From ...

Una copia de esa misma asignación esta vez asignando una cadena de texto vacía en lugar de la referencia al recordset, lo limpiara :

Private Sub Limpiar()
Me.Socio =""
Me.Nombre =""
....
End Sub

Suponiendo la existencia de un botón para limpiar, en su evento Click  ==> Limpiar

Al respecto de los filtros ... dado que esa carga se efectúa en el evento 'al cargar del formulario se asume que no hay filtros aplicados que limpiar, los habrá para obtener el origen de datos del recordset (habrá que limpiarlos donde estén).

¡Gracias!

Gracias Enrique. Lo he hecho como dijiste, he agregado esto en el botón:

Private Sub Comando239_Click()
    Me![Nombre] = Null
    Me![Apellido] = Null
    Me![Direccion] = Null
    Me![Telefono] = Null
    Me![Zona] = Null
    Me![Cobrador] = Null
    Me![Cuota] = Null
    Me.Requery
End Sub

Por ahora funciona. Espero no encontrarme con ninguna sorpresa ja ja

Un consejo nacido de la experiencia (si se me permite):

En una futura revisión de la aplicación 'Comando239' no dirá que es o para que sirve.

Nominarlo como 'Limpiar' que es el nombre de la función hace lo mismo y no consume memoria.

Cuando se genera el código en el propio botón lo clásico es bautizarlo como 'Btn_Limpiar'.

Lo de 'Limpiar' es una licencia, lo interesante es que el nombre sea útil como nemotécnico.

Listo, cambiado cada uno de ellos. A veces uno, desde la ignorancia y por querer hacerlo rápido, lo hace como salga aunque no sea lo mejor.

Saludos!

Respuesta

Si el formulario es, como parece ser por lo que dices, independiente basta con que en el evento Al hacer clic de ese botón que quieres poner para limpiar pongas

me.recordsource=""

Es decir, que el origen de registros del formulario sea una cadena vacía.

Para dejar "en blanco" un combinado puedes hacer lo mismo

me.nombredelcombinado.rowsource=""

Es decir, que el origen de la fila del combinado sea una cadena vacía.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas