Evento Form.Filter (Access)

Ocorre quando o usuário abre uma janela de filtro escolhendo Filtro por Formulário, Filtro/Classificação Avançada ou Filtro de Servidor por Formulário.

Sintaxe

expressão. Filtro (Cancelar, FilterType)

expressão Uma variável que representa um objeto Form.

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
Cancel Obrigatório Integer A configuração determina se deve abrir a janela de filtro. Definir o argumento Cancelar como True (1) impede a abertura da janela de filtro. Você também pode usar o método CancelEvent do objeto DoCmd para cancelar a abertura da janela de filtro.
FilterType Obrigatório Integer A janela Filtro que o usuário está tentando abrir. O argumento FilterType pode ser uma das seguintes constantes intrínsecas:
  • acFilterByForm
  • acFilterAdvanced
  • acServerFilterByForm

Comentários

Para executar um macro ou procedimento de evento quando esse evento ocorrer, defina a propriedade OnFilter como o nome da macro ou como [procedimento do evento].

Use o evento Filter para:

  • Remova qualquer filtro anterior para o formulário. Para fazer isso, defina a propriedade Filter ou ServerFilter do formulário como uma cadeia de caracteres de comprimento zero ("") em que o filtro de macro ou procedimento de evento. Isso é especialmente útil se você quiser garantir que critérios desnecessários não apareçam no novo filtro. Por exemplo, quando você usa o recurso Filtrar por Seleção , os critérios que você usa (o texto selecionado no formulário) são adicionados à expressão de cláusula WHERE da propriedade Filter ou ServerFilter e aparecem na janela Filtrar por Formulário e na janela Filtro/Classificação Avançada ou na janela Filtro por Formulário do Servidor . Você pode remover esses critérios antigos usando o evento Filter.

  • Insira as configurações padrão para o novo filtro. Para fazer isso, defina a propriedade Filter ou ServerFilter para incluir esses critérios. Por exemplo, você pode querer que todos os filtros de um formulário Products exibam apenas produtos atuais (produtos para os quais o controle Descontinuado no formulário Produtos não está selecionado).

  • Use seu próprio janela Filtro personalizado em vez de uma das janelas de filtro do Microsoft Access. Quando o evento Filter ocorre, você pode abrir o seu próprio formulário personalizado e utilizar as entradas nesse formulário para definir a propriedade Filter ou ServerFilter e filtrar o formulário original. Quando o usuário fechar esse formulário personalizado, defina a propriedade FilterOn ou ServerFilterByForm do formulário original como True (1) para aplicar o filtro. Cancelar o evento Filtrar impede a abertura da janela filtro de acesso.

  • Impedir que certos controles no formulário apareçam ou sejam utilizados na janela Filtrar por formulário ou Filtro do servidor por formulário. Se você ocultar ou desabilitar um controle no procedimento de evento filter ou macro, o controle será oculto ou desabilitado na janela Filtrar por Formulário ou Filtro de Servidor por Formulário e não poderá ser usado para definir critérios de filtro. Em seguida, você pode usar o evento ApplyFilter para exibir ou ativar esse controle depois que o filtro será aplicado ou quando o filtro é removido do formulário.

Exemplo

O exemplo a seguir mostra como desabilitar o controle TotalDue em um formulário Orders quando o usuário tenta criar um filtro para que o usuário não possa filtrar neste campo. Todos os registros que tenham um valor TotalDue e atendam aos outros critérios de filtro sempre serão mostrados no formulário filtrado. Este exemplo também força o usuário a usar a janela Filtrar por Formulário no lugar de Filtrar/Classificar Avançado.

Para experimentar este exemplo, adicione o procedimento de evento a seguir a um formulário Orders que contém um controle TotalDue . Tente criar um filtro usando a janela Filtro/Classificação Avançada que usa o controle TotalDue . Tente também criar o mesmo filtro usando a janela Filtrar por Formulário.

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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.