Como criar uma consulta dinâmica com valores de um formulário de pesquisa no Access

Avançado: requer codificação especializada, interoperabilidade e competências multiutilizadas.

Este artigo aplica-se a um ficheiro de base de dados do Microsoft Access (.mdb) ou a um ficheiro de base de dados do Microsoft Access (.accdb) e a um ficheiro de projeto do Microsoft Access (.adp).

Resumo

Este artigo mostra-lhe como criar dinamicamente critérios para uma cadeia de consulta com valores de um formulário de pesquisa no Microsoft Access.

Mais informações

Por vezes, poderá querer criar um formulário que sirva de formulário de pesquisa. Quer ser capaz de introduzir valores no formulário e criar dinamicamente a cadeia SQL adequada. Os passos seguintes mostram-lhe como criar dinamicamente uma cadeia de consulta que utiliza o método BuildCriteria.

A Microsoft fornece exemplos de programação apenas a título informativo, sem qualquer garantia expressa ou implícita, incluindo, sem limitações, as garantias implícitas de comercialização e/ou adequação a um fim específico. Este artigo pressupõe que o utilizador está familiarizado com a linguagem de programação demonstrada e as ferramentas utilizadas para criar e depurar procedimentos. Os engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para fornecer funcionalidades adicionais ou criar procedimentos para satisfazer os seus requisitos específicos. ATENÇÃO: se seguir os passos neste exemplo, modifique a base de dados de exemplo Northwind.mdb. Poderá querer fazer uma cópia de segurança do ficheiro Northwind.mdb e seguir estes passos numa cópia da base de dados.

Exemplo Passo a Passo

  1. Inicie o Access.
  2. No menu Ajuda , aponte para Bases de Dados de Exemplo e, em seguida, clique em Base de Dados de Exemplo northwind.
  3. Abra o formulário Clientes na vista Estrutura.
  4. Adicione um botão de comando e uma caixa de texto ao formulário e, em seguida, defina as seguintes propriedades:
 Command Button
 ------------------------
 Name: cmdSearch
 Caption: Search
 OnClick: Event Procedure

Text Box
 --------------
 Name: txtSQL
 Width: 4.4583"
 Height: 1.25"
  1. Defina a propriedade OnClick do botão de comando para o seguinte procedimento de evento:
Private Sub cmdSearch_Click()
    On Error Resume Next

Dim ctl As Control
    Dim sSQL As String
    Dim sWhereClause As String

'Initialize the Where Clause variable.
    sWhereClause = " Where "

'Start the first part of the select statement.
    sSQL = "select * from customers "

'Loop through each control on the form to get its value.
    For Each ctl In Me.Controls
        With ctl
            'The only Control you are using is the text box.
            'However, you can add as many types of controls as you want.
            Select Case .ControlType
                Case acTextBox
                    .SetFocus
                    'This is the function that actually builds
                    'the clause.
                    If sWhereClause = " Where " Then
                        sWhereClause = sWhereClause & BuildCriteria(.Name, dbtext, .Text)
                    Else
                        sWhereClause = sWhereClause & " and " & BuildCriteria(.Name, dbtext, .Text)
                    End If
            End Select
        End With
    Next ctl

'Set the forms recordsource equal to the new
    'select statement.
    Me.txtSQL = sSQL & sWhereClause
    Me.RecordSource = sSQL & sWhereClause
    Me.Requery

End Sub

  1. Guarde o formulário e, em seguida, abra-o na vista Formulário.

    Tenha em atenção que quando clica no botão de comando Procurar , a caixa de texto txtSQL reflete a consulta que foi criada a partir dos valores no formulário Clientes. Além disso, o formulário Clientes foi requerido para que reflita os resultados da nova cadeia de SQL.

Referências

Para obter mais informações sobre o método BuildCriteria, no Visual Basic Revisor, clique em Ajuda do Microsoft Visual Basic no menu Ajuda, escreva método buildcriteria no Assistente do Office ou no Assistente de Respostas e, em seguida, clique em Procurar para ver o tópico.