Share via


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:
  • acFilterByForm
  • acFilterAdvanced
  • acServerFilterByForm

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.