Come compilare una query dinamica con valori da un modulo di ricerca in Access

Avanzate: richiede competenze esperte di codifica, interoperabilità e multiutente.

Le informazioni in questo articolo si applicano ai file di database di Microsoft Access con estensione .mdb oppure .accdb e ai file di progetto di Microsoft Access con estensione .adp.

Riepilogo

Questo articolo illustra come compilare dinamicamente criteri per una stringa di query con valori da un modulo di ricerca in Microsoft Access.

Ulteriori informazioni

In alcuni casi, è possibile creare un modulo che funge da modulo di ricerca. Si vuole essere in grado di immettere valori nel modulo e compilare dinamicamente la stringa SQL appropriata. La procedura seguente illustra come compilare dinamicamente una stringa di query che usa il metodo BuildCriteria.

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. I tecnici del supporto tecnico Microsoft possono spiegare le funzionalità di una particolare procedura, ma non modificheranno questi esempi per fornire funzionalità aggiuntive o procedure di costruzione per soddisfare i requisiti specifici. ATTENZIONE: se si segue la procedura descritta in questo esempio, modificare il database di esempio Northwind.mdb. È possibile eseguire il backup del file Northwind.mdb e seguire questa procedura in una copia del database.

Esempio dettagliato

  1. Avviare Access.
  2. Scegliere Database di esempio dal menu ? e quindi fare clic su Database di esempio Northwind.
  3. Aprire la maschera Clienti in visualizzazione Struttura.
  4. Aggiungere un pulsante di comando e una casella di testo al modulo e quindi impostare le proprietà seguenti:
 Command Button
 ------------------------
 Name: cmdSearch
 Caption: Search
 OnClick: Event Procedure

Text Box
 --------------
 Name: txtSQL
 Width: 4.4583"
 Height: 1.25"
  1. Impostare la proprietà OnClick del pulsante di comando sulla routine evento seguente:
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. Salvare la maschera e aprirla in visualizzazione Maschera.

    Si noti che quando si fa clic sul pulsante di comando Cerca , la casella di testo txtSQL riflette la query creata dai valori nel modulo Clienti. Inoltre, il modulo Clienti è stato ricreato in modo che rifletta i risultati della nuova stringa SQL.

Riferimenti

Per altre informazioni sul metodo BuildCriteria, nel Editor di Visual Basic fare clic su Guida di Microsoft Visual Basic nel menu ?, digitare il metodo buildcriteria nell'Assistente di Office o nella Creazione guidata risposte e quindi fare clic su Cerca per visualizzare l'argomento.