Como utilizar a técnica consulta por formulário (QBF) no Microsoft Access

Número original da BDC: 304428

Nota

Necessita de competências básicas de macro, programação e interoperabilidade. Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.accdb ou .mdb).

Resumo

Este artigo mostra-lhe como utilizar um formulário para especificar os critérios de uma consulta. Esta técnica é denominada consulta por formulário (QBF).

Mais Informações

Na técnica QBF, cria um formulário no qual introduz critérios de consulta. Este formulário contém caixas de texto em branco. Cada caixa de texto representa um campo numa tabela que pretende consultar. Só cria entradas nas caixas de texto para as quais pretende especificar critérios de pesquisa.

O formulário QBF assemelha-se a um formulário de introdução de dados que tem campos que correspondem aos campos numa tabela. Uma tabela com campos para Nome, Endereço, Cidade, Estado e Código Postal pode ter um formulário QBF com campos correspondentes. Para selecionar determinados registos, pode introduzir qualquer combinação de critérios de pesquisa no formulário. Pode especificar apenas uma cidade, uma cidade e um estado, ou apenas um código postal ou qualquer outra combinação. Os campos que deixar em branco são ignorados. Quando clica num botão de comando no formulário, o Access executa uma consulta que utiliza os critérios de pesquisa do formulário.

Para utilizar a técnica QBF, siga estes passos:

  1. Abra a base de dados de exemplo Northwind.mdb.

  2. Crie um novo formulário que não se baseie em nenhuma tabela ou consulta e guarde-o como QBF_Form.

  3. No novo formulário, crie duas caixas de texto e um botão de comando com as seguintes propriedades. Em seguida, guarde o formulário:

    Text box 1
    ------------------
    Name: WhatCustomer
    
    Text box 2
    ------------------
    Name: WhatEmployee
    
    Command button 1:
    ------------------
    Caption: Search
    OnClick: QBF_Macro
    
  4. Crie a seguinte nova macro e, em seguida, guarde-a como QBF_Macro:

    Action: OpenQuery
    Query Name: QBF_Query
    View: Datasheet
    Data Mode: Edit
    
  5. Crie a seguinte nova consulta baseada na tabela Encomendas e, em seguida, guarde-a como QBF_Query:

    Field: CustomerID
    Sort: Ascending
    Criteria: Forms![QBF_Form]![WhatCustomer] Or Forms![QBF_Form]![WhatCustomer] Is Null
    
    Field: EmployeeID
    Sort: Ascending
    Criteria: Forms![QBF_Form]![WhatEmployee] Or Forms![QBF_Form]![WhatEmployee] Is Null
    
    NOTE: When you type the criteria, make sure that you type the entire criteria in a single Criteria field; do not split the criteria by placing the 'Or' section on a separate row.  
    
    Field: OrderID
    Field: OrderDate
    
  6. Abra QBF_Form na vista Formulário. Introduza as seguintes combinações de critérios. Clique em Procurar após cada combinação:

    Customer ID   Employee ID  Result
    -------------------------------------------------------
    <blank>       <blank>      All 830 orders
    
    AROUT         <blank>      13 orders
    
    AROUT         4            4 AROUT orders for employee 4
    
    <blank>       4            156 orders for employee 4
    

Depois de ver o conjunto de resultados de cada consulta, feche a janela Folha de Dados. Em seguida, inicie a sua próxima pesquisa. Sempre que clicar no botão Procurar , os parâmetros na consulta QBF filtram os dados com base nos critérios de pesquisa que especificou no formulário de consulta QBF.

Notas sobre os critérios do parâmetro QBF

A consulta QBF de exemplo neste artigo implementa critérios na consulta como

Formulários! FormName! NomeDoControloOu formulários! FormName! NomeDoControloÉ Nulo

para filtrar os dados. Estes critérios devolvem todos os registos correspondentes. Se o valor dos critérios for nulo, todos os registos serão devolvidos para o campo especificado.

Pode especificar qualquer um dos seguintes critérios alternativos para devolver resultados ligeiramente diferentes.

Nota

Nos seguintes critérios de exemplo, é utilizado um caráter de sublinhado (_) como um caráter de continuação de linha. Remova o caráter de sublinhado do fim da linha quando recriar estes critérios.

  • Como o Forms! FormName! ControlName& "*" ou _ Forms! FormName! NomeDoControloÉ Nulo

    Esta instrução de critérios é a mesma que o exemplo de QBF acima, exceto que pode consultar com um caráter universal. Por exemplo, se introduzir "Jo" num campo através desta instrução de critérios, a consulta devolve todos os registos no campo que começam por "Jo". Isto inclui Johnson, Jones, Johanna, etc.

  • Entre Formulários! FormName! Data de Início e Formulários! FormName! Data Final ou _ Formulários! FormName! StartDate Is Null

    Pode utilizar esta instrução de critérios para consultar um campo de data através das caixas de texto Data de Início e Data de Fim no formulário de consulta. Os registos cujas datas de início e de fim se enquadram entre os valores que especificar no formulário de consulta são devolvidos. No entanto, se omitir um valor de Data de Início no formulário, a consulta devolve todos os registos, independentemente do valor Data de Fim.

  • Como o Forms! FormName! ControlName& "*" ou é Nulo

    Esta instrução de critérios devolve ambos os registos que correspondem aos critérios e registos nulos. Se os critérios forem nulos, todos os registos serão devolvidos. Tenha em atenção que o asterisco (*) é considerado um parâmetro porque faz parte de uma expressão Like maior. Uma vez que o asterisco é um valor de critérios hard-coded (por exemplo, Como "*"), são devolvidos registos com valores nulos.

  • Como IIf(IsNull(Forms!FormName! [ControlName]), _ "*",[Formulários]! [FormName]! [ControlName])

    Esta instrução de critérios devolve todos os registos que correspondem aos critérios. Se não forem especificados critérios no formulário de consulta, são devolvidos todos os registos que não são nulos.

  • ISe(ÉNulo(Formulários!FormName! [ControlName]), _ [FieldName],[Forms]! [FormName]! [ControlName])

    Isto devolve todos os registos que correspondem aos critérios. Se não forem especificados critérios no formulário de consulta, todos os registos que não são nulos são devolvidos (o mesmo resultado do exemplo acima).