Evento Form.Filter (Access)

Ocorre quando o usuário abre uma janela de filtro escolhendo Filtrar por formulário, Filtrar/Classificar Avançado ou Filtro de Servidor por Formulário.

Sintaxe

mais simples. Filtrar (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 Cancel como True (1) impede que a janela de filtro seja aberta. 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 estranhos não apareçam no novo filtro. Por exemplo, quando você usa o recurso Filtrar por Seleção , os critérios usados (o texto selecionado no formulário) são adicionados à expressão da cláusula WHERE da propriedade Filter ou ServerFilter e aparecem na janela Filtrar por Formulário e na janela Filtrar/Classificar Avançado ou na janela Filtro de Servidor por Formulário . 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, talvez você queira que todos os filtros de um formulário Produtos exibam apenas os 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. O cancelamento do evento Filter impede que a janela de filtro do Access seja aberta.

  • 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 ficará 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 Pedidos quando o usuário tenta criar um filtro, para que o usuário não possa filtrar nesse campo. Todos os registros que possuem um valor TotalDue e atendem 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 de Pedidos que contém um controle TotalDue . Tente criar um filtro usando a janela Filtrar/Classificar Avançado 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.