Evento Form.Filter (Access)
Se produce cuando el usuario abre una ventana de filtro eligiendo Filtrar por formulario, Filtro/ordenación avanzado o Filtro de servidor por formulario.
Sintaxis
expresión. Filter (Cancel, FilterType)
expresión Variable que representa un objeto Form.
Parameters
Nombre | Obligatorio/opcional | Tipo de datos | Descripción |
---|---|---|---|
Cancel | Obligatorio | Integer | La opción determina si se debe abrir la ventana de filtro. Establecer el argumento Cancel en True (1) impide que se abra la ventana de filtro. También puede usar el método CancelEvent del objeto DoCmd para cancelar la apertura de la ventana de filtro. |
FilterType | Obligatorio | Integer | Ventana de filtro que el usuario intenta abrir. El argumento FilterType puede ser una de las siguientes constantes intrínsecas:
|
Comentarios
Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad OnFilter en el nombre de la macro o en [procedimiento de evento].
Use el evento Filter para:
Quitar cualquier filtro anterior del formulario. Para ello, establezca la propiedad Filter o ServerFilter del formulario en una cadena de longitud cero ("") en el filtro de macro o procedimiento de evento. Esto es especialmente útil si desea asegurarse de que los criterios extraños no aparezcan en el nuevo filtro. Por ejemplo, cuando se usa la característica Filtrar por selección , los criterios que se usan (el texto seleccionado en el formulario) se agregan a la expresión de cláusula WHERE de la propiedad Filter o ServerFilter y aparecen tanto en la ventana Filtrar por formulario como en la ventana Filtro o ordenación avanzadas o en la ventana Filtro por formulario del servidor . Estos criterios antiguos se puede eliminar mediante el evento de filtro.
Especifique la configuración predeterminada para el nuevo filtro. Para ello, establezca la propiedad Filter o ServerFilter en incluir estos criterios. Por ejemplo, es posible que desee que todos los filtros de un formulario Productos muestren solo los productos actuales (productos para los que no está seleccionado el control Discontinued en el formulario Productos ).
Use su propia ventana de filtro personalizado en lugar de una de las ventanas de filtro de Microsoft Access. Cuando se produce el evento Filter, puede abrir el formulario personalizado y utilizar las entradas de este formulario para establecer la propiedad Filter o ServerFilter y filtrar el formulario original. Cuando el usuario cierre este formulario personalizado, establezca la propiedad FilterOn o ServerFilterByForm del formulario original en True (1) para aplicar el filtro. La cancelación del evento Filter impide que se abra la ventana de filtro de Access.
Evitar que aparezcan o se utilicen ciertos controles del formulario en la ventana Filtro por formulario o Filtro de servidor por formulario. Si oculta o deshabilita un control en la macro o procedimiento de evento Filter , el control está oculto o deshabilitado en la ventana Filtrar por formulario o Filtrar por formulario del servidor y no se puede usar para establecer criterios de filtro. A continuación, puede usar el evento ApplyFilter para mostrar o habilitar este control después de aplicar el filtro, o cuando se quita el filtro desde el formulario.
Ejemplo:
En el ejemplo siguiente se muestra cómo deshabilitar el control TotalDue en un formulario Orders cuando el usuario intenta crear un filtro, de modo que el usuario no pueda filtrar en este campo. Los registros que tengan un valor TotalDue y cumplan los demás criterios de filtro siempre se mostrarán en el formulario filtrado. En este ejemplo se exige también al usuario que utilice la ventana Filtrar por formulario en lugar de la ventana Filtro u orden avanzado.
Para probar este ejemplo, agregue el siguiente procedimiento de evento a un formulario Orders que contenga un control TotalDue . Intente crear un filtro mediante la ventana Filtro o ordenación avanzado que usa el control TotalDue . Intente asimismo crear el mismo filtro mediante la ventana Filtrar por formulario.
Private Sub Form_Filter(Cancel As Integer, FilterType As Integer)
If FilterType = acFilterByForm Then
Forms!Orders!TotalDue.Enabled = False
ElseIf FilterType = acFilterAdvanced Then
MsgBox "The best way to filter this form is to use the " _
& "Filter By Form command or toolbar button.", vbOKOnly + vbInformation
Cancel = True
End If
End Sub
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de