|
Responder
|
| Autor | |
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Tema: Evento AlAplicarFiltro, ApplyType no funcionaEnviado: 31/Octubre/2023 a las 14:51 |
|
Hola, buscando por internet, veo que existe la manera de detectar cuándo se quita el filtro en el Evento Al Aplicar Filtro, lo he probado pero no funciona. En mi caso, es un subformulario (aunque si lo abro directamente y filtro tampoco funciona). Los filtros y quitar los filtros los hago de manera access, es decir con las flechitas, no paso ningún código. Solo quiero que, ya que access detecta cuándo se filtra, también cuando se quita el fitro porque quiero se muestre en la barra de estado el filtro o lo limpie si no hay filtro. Pero como este evento ciertamente salta antes de aplicar el filtro, según dice la ayuda de access, cuando yo lo ejecuto quitando el filtro, veo que Me.Filter sigue con el valor del filtro (anterior) Sin embargo este código aparece en varios sitios, debe funcionar y yo perderme en algo: Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer) Dim variantBar As Variant If ApplyType = acApplyFilter Then 'Filtro normal de access variantBar = SysCmd(acSysCmdSetStatus, Me.Filter) ElseIf ApplyType = acShowAllRecords Then 'Mostrar todos los registros, es decir no hay filtro Me.Filter = "" variantBar = SysCmd(acSysCmdSetStatus, " ") End If Gracias Saludos
|
|
![]() |
|
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: 14428 |
Enviado: 31/Octubre/2023 a las 15:08 |
|
Nunca había usado esto ... pero por lo que veo, cuando aplicas el filtro ApplType vale 1 y cuando lo quitas vale 0.
De todas formas comprueba los valores que tema colocando un punto de interrupción.
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 31/Octubre/2023 a las 15:22 |
|
Nada :( El valor 1 lo toma cuando aplico filtro y cuando lo quito, tanto si lo quito desde la flechita de la columna filtrada pulsando "borrar filtro" como si pulso "Alternar filtro", para quitar el filtro. Pongo este MsgBox ApplyType en el Evento siempre me devuelve 1 |
|
![]() |
|
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: 14428 |
Enviado: 31/Octubre/2023 a las 15:34 |
|
¿Y pulsando quitar filtro?
|
|
![]() |
|
pitxiku
Colaborador
Unido: 27/Septiembre/2017 Localización: En mi casa Estado: Sin conexión Puntos: 1536 |
Enviado: 31/Octubre/2023 a las 19:29 |
|
En ese formulario/subformulario, ¿tienes un filtro ajeno a los botones que estás pulsando? ¿algo como que filtras el formulario al abrir, le pasas un filtro en el OpenForm, o similar?
He puesto esto en un formulario:
Y con los botones me cambia el estado de ApplyType. Sólo he conseguido que me mantenga el 1 (activado), si en el diseño dejo un filtro y el FilterOn activado. Al abrir, mientras filtro o alterno con otros campos que no están en el filtro guardado en el diseño, sí que me mantiene el ApplyType a 1; aunque en la segunda línea del MsgBox me aparece el filtro guardado. En cuanto elimino ese filtro, ya vuelvo al cambio 1 <-> 0.
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 01/Noviembre/2023 a las 22:30 |
|
Hola! muchas gracias a los dos por responder. Mihura, yo creía que estaba pulsando todas las opciones para quitar el filtro, pero no sé muy bien por qué, con lo que me ha puesto pitxiku, acabo de pulsar "Borrar filtro de.." en la columna filtrada y aunque sigue diciendo que el filtro está activado, ahora Me.Filter sale vacío y de ahí puedo tirar para armar el código. pitxiku, muuuchas gracias. No tengo ningún filtro al abrir, solo ordeno algunas columnas. Pero es increíble porque a mí Me.Filter antes me salía con el filtro anterior y con la constante de filtro aplicado, y sin embargo ahora por lo menos Filter sale limpio y de ahí puedo decirle que vacíe la barra de estado. De verdad que creía que pulsaba "Borrar filtro de.." pero algo estaba haciendo mal. O no estaba poniendo bien el código o no quitaba bien el filtro!!! :) Dim variantBar As Variant Dim strFiltroBar As String strFiltroBar = Me.Filter If Me.Filter <> "" Then strFiltroBar = Replace(strFiltroBar, "[tabla1].", "") strFiltroBar = Replace(strFiltroBar, "(((", "(") strFiltroBar = Replace(strFiltroBar, ")))", ")") strFiltroBar = Replace(strFiltroBar, "AND", "And") variantBar = SysCmd(acSysCmdSetStatus, strFiltroBar) Else variantBar = SysCmd(acSysCmdSetStatus, " ") End If Genial!! muchas gracias, pueden cerrar el hilo.
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 02/Noviembre/2023 a las 00:07 |
|
Hola de nuevo. Al final he conseguido controlar "Alternar filtro" y limpiar también la barra de estado si lo he pulsado. Os paso lo que hecho. Declaro strFiltroBar2 en el módulo del formulario que va a recoger el filtro y así va a mantener su valor anterior. Dim strFiltroBar2 As String Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer) Dim variantBar As Variant Dim strFiltroBar As String strFiltroBar = Me.Filter If Me.Filter <> "" Then 'strFiltroBar2 toma el valor de Me.Filter al final de la condición, por lo que si se filtra un campo, la variable strFiltroBar2 todavía está vacía y será distinta de Me.Filter If strFiltroBar2 <> Me.Filter Then strFiltroBar = Replace(strFiltroBar, "[Tabla1].", "") strFiltroBar = Replace(strFiltroBar, "(((", "(") strFiltroBar = Replace(strFiltroBar, ")))", ")") strFiltroBar = Replace(strFiltroBar, "AND", "And") variantBar = SysCmd(acSysCmdSetStatus, strFiltroBar) strFiltroBar2 = Me.Filter Exit Sub End If 'Alternar filtro (Si se pulsa "Alternar filtro" para volver al estado inicial sin el filtrado, tiene la condición que aún así se conserva el filtro anterior, por lo que strFiltroBar2 coincide con el filtro) Else variantBar = SysCmd(acSysCmdSetStatus, " ") strFiltroBar2 = "" End If Else 'Al pulsar "Borrar filtro de..." Si se pulsa Alternar filtro no funciona aquí variantBar = SysCmd(acSysCmdSetStatus, " ") strFiltroBar2 = "" End If Saludos!
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 28/Diciembre/2023 a las 19:27 |
|
PUeden cerrar el hilo xfavor, gracias.
|
|
![]() |
|
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 |