Compartilhar via


Evento Form.Filter (Access)

Ocorre quando o utilizador abre uma janela de filtro ao selecionar Filtrar por Formulário, Filtro/Ordenaçã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 Verdadeiro (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].

Utilize o evento Filtrar 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. Isto é especialmente útil se quiser certificar-se de que os critérios estranhos não aparecem no novo filtro. Por exemplo, quando utiliza a funcionalidade Filtrar Por Seleção , os critérios que utiliza (o texto selecionado no formulário) são adicionados à expressão da cláusula WHERE Filter ou ServerFilter e são apresentados na janela Filtrar Por Formulário e na janela Filtro/Ordenação Avançada ou na janela Filtrar 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, poderá querer que todos os filtros de um formulário Produtos apresentem apenas produtos atuais (produtos para os quais o controlo 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 utilizador fechar este formulário personalizado, defina a propriedade FilterOn ou ServerFilterByForm do formulário original como Verdadeiro (1) para aplicar o filtro. Cancelar o evento Filtrar impede a abertura da janela filtro do Access.

  • 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 ocultar ou desativar um controlo no procedimento de evento ou macro Filtrar , o controlo está oculto ou desativado na janela Filtrar Por Formulário ou Filtro de Servidor por Formulário e não pode ser utilizado 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 seguinte mostra como desativar o controlo TotalDue num formulário Encomendas quando o utilizador tenta criar um filtro, para que o utilizador não possa filtrar neste campo. Todos os registos que tenham um valor TotalDue e cumpram os outros critérios de filtro serão sempre apresentados 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 seguinte procedimento de evento a um formulário Encomendas que contém um controlo TotalDue . Tente criar um filtro com a janela Filtro/Ordenação Avançada que utiliza o controlo 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.