Ação de macro AplicarFiltro

Aplica-se a
Access para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Pode utilizar a ação ApplyFilter para aplicar um filtro, uma consulta ou uma cláusula SQL WHERE a uma tabela, formulário ou relatório. Esta ação restringe ou ordena os registos na tabela ou os registos da tabela ou consulta subjacente do formulário ou relatório. Para relatórios, só pode utilizar esta ação numa macro especificada pela propriedade de evento do OnOpen relatório.

Observação

Pode utilizar esta ação para aplicar uma cláusula SQL WHERE apenas quando aplicar um filtro de servidor. Não é possível aplicar um filtro de servidor à origem de registos de um procedimento armazenado.

Observação

A ApplyFilter ação de macro não está disponível nas aplicações Web do Access.

Configuração

A ApplyFilter ação tem os seguintes argumentos.

Argumento da ação Descrição
Nome do Filtro O nome de um filtro ou consulta que restringe ou ordena os registos da tabela, formulário ou relatório. Pode introduzir o nome de uma consulta existente ou um filtro que tenha sido guardado como uma consulta na caixa Nome do Filtro na secção Argumentos de Ação do painel Construtor de Macros.
Nota: Quando utiliza esta ação para aplicar um filtro de servidor, o argumento Nome do Filtro tem de estar em branco.
Condição Where Uma cláusula SQL WHERE válida, sem a palavra WHEREou uma expressão que restringe os registos da tabela, formulário ou relatório.

Nota: Numa expressão de argumento Condição Where , o lado esquerdo normalmente contém um nome de campo da tabela ou consulta subjacente para o formulário ou relatório. Normalmente, o lado direito contém os critérios que pretende aplicar a este campo para restringir ou ordenar os registos. Por exemplo, os critérios podem ser o nome de um controlo noutro formulário que contém o valor que pretende que os registos no primeiro formulário correspondam. O nome do controlo deve ser completamente qualificado, por exemplo, Forms!formname!controlname.
Os nomes dos campos devem estar entre aspas duplas e os literais de cadeia devem estar entre plicas.
O comprimento máximo do argumento Condição Where é de 255 carateres. Se precisar de introduzir uma cláusula SQL WHERE mais longa, utilize o ApplyFilter método do DoCmd objeto num módulo Visual Basic for Applications (VBA). Pode introduzir instruções de cláusula SQL WHERE de até 32.768 carateres no VBA.

Observação

Pode utilizar o argumento Nome do Filtro se já tiver definido um filtro que forneça os dados adequados. Pode utilizar o argumento Condição Where para introduzir diretamente os critérios de restrição. Se utilizar ambos os argumentos, o Access aplica a WHERE cláusula aos resultados do filtro. Tem de utilizar um ou ambos os argumentos.

Comentários

Pode aplicar um filtro ou consulta a um formulário na Vista de Formulário ou Vista de Folha de Dados.

O filtro e WHERE a condição que aplicar tornam-se a definição do formulário ou do relatório Filter ou ServerFilter propriedade.

Para tabelas e formulários, esta ação é semelhante à seleção de Aplicar Filtro/Ordenação ou Aplicar Filtro de Servidor no menu Registos . O comando de menu aplica o filtro criado mais recentemente à tabela ou formulário, enquanto a ação ApplyFilter aplica um filtro ou consulta especificado.

Numa base de dados do Access, se apontar para Filtrar no menu Registos e, em seguida, selecionar Filtro/Ordenação Avançada depois de executar a ApplyFilter ação, a janela Filtro/Ordenação Avançada mostra os critérios de filtro que selecionou com esta ação.

Para remover um filtro e apresentar todos os registos de uma tabela ou formulário numa base de dados do Access, pode utilizar a ação ShowAllRecords ou o comando Remover Filtro/Ordenação no menu Registos . Para remover um filtro num projeto do Access (.adp), regresse à janela Filtro do Servidor Por Formulário e remova todos os critérios de filtro. Em seguida, selecione Aplicar Filtro de Servidor no menu Registos na barra de ferramentas ou defina a ServerFilterByForm propriedade como False (0).

Quando guarda uma tabela ou formulário, o Access guarda qualquer filtro atualmente definido nesse objeto. No entanto, não aplicará o filtro automaticamente da próxima vez que o objeto for aberto, embora aplique automaticamente qualquer ordenação que tenha aplicado antes de o objeto ser guardado. Se quiser aplicar um filtro automaticamente quando um formulário é aberto pela primeira vez, especifique uma macro que contenha a ação ApplyFilter ou um procedimento de evento que contenha o ApplyFilter método do objeto como a OnOpen definição da DoCmd propriedade do evento do formulário. Também pode aplicar um filtro através da ação OpenForm ou OpenReport ou dos métodos correspondentes. Para aplicar automaticamente um filtro quando uma tabela é aberta pela primeira vez, abra a tabela utilizando uma macro que contenha a ação OpenTable , seguida imediatamente pela ação ApplyFilter .

Exemplo

Aplicar um filtro através de uma macro

A seguinte macro contém um conjunto de ações. Cada ação filtra os registos de um formulário lista de telefone do cliente. Mostra como utilizar as ações ApplyFilter, ShowAllRecordse GoToControl . Também mostra como utilizar condições para determinar que botão de alternar num grupo de opções foi selecionado no formulário. Cada linha de ação está associada a um botão de alternar que seleciona o conjunto de registos que começam com A, B, C, etc. ou todos os registos. Anexe esta macro ao AfterUpdate evento do grupo de opções CompanyNameFilter .

Condição Ação Argumentos: Definição Comentário
[CompanyNameFilters]=1 AplicarFiltro Condição Where: [CompanyName] Like "[AÀÁÂÃÄ]*" Filtre por nomes de empresas que comecem por A, À, Á, Â, Ã ou Ä.
[CompanyNameFilters]=2 AplicarFiltro Condição Where: [CompanyName] Like "B*" Filtre por nomes de empresa que comecem por B.
[CompanyNameFilters]=3 AplicarFiltro Condição Where: [CompanyName] Like "[CÇ]*" Filtre por nomes de empresa que comecem por C ou Ç.
... As linhas de ação de D a Y têm o mesmo formato de A a C...
[CompanyNameFilters]=26 AplicarFiltro Condição Where: [CompanyName] Like "[ZÆØÅ]*" Filtre por nomes de empresas que comecem por Z, Æ, Ø ou Å.
[CompanyNameFilters]=27 MostrarTodosRegistos Mostrar todos os registos.
[RecordsetClone]. [RecordCount]>0 GoToControl Nome do Controlo: NomedaEmpresa Se forem devolvidos registos para a letra selecionada, mova o foco para o controlo CompanyName.