Share via


Aplicar um filtro ao abrir um formulário ou relatório

Quando você usa o código do Visual Basic for Applications (VBA) para abrir um formulário ou relatório, convém especificar os registros que vai exibir. Você pode especificar os registros para exibição de várias maneiras. A abordagem mais comum é exibir uma caixa de diálogo personalizada na qual o usuário insere os critérios para a consulta base do formulário ou relatório. Para obter os critérios, consulte os controles na caixa de diálogo. As seções seguintes descrevem três maneiras de usar os critérios inseridos em uma caixa de diálogo personalizada para filtrar registros.

Usando o argumento WhereCondition

O argumento wherecondition do método ou ação OpenForm ou OpenReport é a maneira mais simples de obter critérios em situações em que um usuário está fornecendo apenas um valor. Por exemplo, você pode exibir um formulário que solicita aos usuários selecionar a ID do pedido da nota fiscal que desejam imprimir. Caso esteja usando um procedimento de evento, aplique um filtro que exiba apenas um registro, adicionando um argumento ao método OpenReport, conforme mostrado na linha de código a seguir:

DoCmd.OpenReport "Invoice", acViewPreview, , "OrderID = " & OrderID 

O "OrderID = " na expressão de filtro refere-se ao campo OrderID na consulta subjacente do relatório invoice. O OrderID, à direita da expressão, refere-se ao valor que usuário selecionou na caixa de diálogo da lista OrderID. A expressão concatena os dois, gerando o relatório para incluir apenas a nota fiscal do registro selecionado pelo usuário.

O argumento WhereCondition é aplicado apenas pelo procedimento de evento especificado para o evento OnClick do botão que executa o método OpenForm ou OpenReport. Isso lhe dá a flexibilidade de usar qualquer número de diferentes caixas de diálogo para abrir o mesmo formulário ou relatório e aplicar diferentes conjuntos de critérios, dependendo do que o usuário pretenda fazer. Por exemplo, o usuário pode querer imprimir a nota fiscal de um determinado cliente ou exibir os pedidos de determinado produto.

Use o argumento wherecondition para definir critérios para mais de um campo, mas se você fizer isso, a configuração do argumento rapidamente se torna longa e complicada. Nessas situações, pode ser mais fácil especificar os critérios em uma consulta.

Usando uma consulta como filtro

Uma consulta separada, também chamada de consulta de filtro, pode fazer referência aos controles na caixa de diálogo para obter os respectivos critérios. Usando esta abordagem, você filtra os registros de um formulário ou relatório definindo o argumento FilterName do método ou da ação OpenForm ou OpenReport para o nome da consulta de filtro que você criou. A consulta de filtro deve incluir todas as tabelas na fonte de registro do formulário ou relatório que você vai abrir. Além disso, a consulta de filtro deve incluir todos os campos do formulário ou relatório que vai abrir, ou definir a respectiva propriedade OutputAllFields como Yes.

Após criar e salvar a consulta para usá-la como um filtro, defina o argumento FilterName do método ou da ação OpenReport para o nome da consulta de filtro. O argumento FilterName aplica a consulta de filtro especificada, sempre que executar o método OpenReport.

Usar uma consulta como filtro para definir critérios é tão vantajoso quanto usar o argumento WhereCondition do método OpenForm ou OpenReport. A consulta de filtro proporciona a mesma flexibilidade de uso de mais do que uma caixa de diálogo para abrir o mesmo formulário ou relatório e aplicar diferentes conjuntos de critérios, dependendo do que o usuário pretenda fazer..

Referindo-se diretamente aos controles da caixa de diálogo na consulta subjacente de um formulário ou relatório

Você pode também fazer referência aos controles da caixa de diálogo diretamente na consulta base de um formulário ou relatório, em vez de usar os argumentos do método OpenForm ou OpenReport. Usando esta abordagem, o método ou ação OpenForm ou OpenReport não requer argumentos WhereCondition ou FilterName. Em vez disso, cada vez que você abre um formulário ou relatório, sua consulta procura a caixa de diálogo para obter os respectivos critérios. No entanto, quando um usuário abre o formulário ou relatório na janela Banco de Dados, em vez de fazê-lo na caixa de diálogo, o Access exibe uma caixa de parâmetro que solicita o valor da caixa de diálogo ao usuário.

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.