Come usare la tecnica query per modulo (QBF) in Microsoft Access

Numero KB originale: 304428

Nota

Richiede competenze di base per macro, codifica e interoperabilità. Questo articolo si applica solo a un database di Microsoft Access (con estensioni .accdb e .mdb).

Riepilogo

Questo articolo illustra come usare un modulo per specificare i criteri per una query. Questa tecnica è chiamata query per modulo (QBF).

Ulteriori informazioni

Nella tecnica QBF si crea un modulo in cui immettere i criteri di query. Questo modulo contiene caselle di testo vuote. Ogni casella di testo rappresenta un campo in una tabella su cui si vuole eseguire una query. Le voci vengono create solo nelle caselle di testo per le quali si desidera specificare i criteri di ricerca.

Il modulo QBF è simile a un modulo di immissione dati con campi che corrispondono ai campi di una tabella. Una tabella con campi per Nome, Indirizzo, Città, Stato e CAP può avere un modulo QBF con campi corrispondenti. Per selezionare determinati record, è possibile immettere qualsiasi combinazione di criteri di ricerca nel modulo. È possibile specificare solo una città, una città e uno stato oppure solo un CAP o qualsiasi altra combinazione. I campi che si lasciano vuoti vengono ignorati. Quando si fa clic su un pulsante di comando nel modulo, Access esegue una query che usa i criteri di ricerca del modulo.

Per usare la tecnica QBF, seguire questa procedura:

  1. Aprire il Northwind.mdb di database di esempio.

  2. Creare un nuovo modulo non basato su alcuna tabella o query e salvarlo come QBF_Form.

  3. Nel nuovo modulo creare due caselle di testo e un pulsante di comando con le proprietà seguenti. Salvare quindi il modulo:

    Text box 1
    ------------------
    Name: WhatCustomer
    
    Text box 2
    ------------------
    Name: WhatEmployee
    
    Command button 1:
    ------------------
    Caption: Search
    OnClick: QBF_Macro
    
  4. Creare la nuova macro seguente e salvarla come QBF_Macro:

    Action: OpenQuery
    Query Name: QBF_Query
    View: Datasheet
    Data Mode: Edit
    
  5. Creare la nuova query seguente basata sulla tabella Orders e salvarla come 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. Aprire QBF_Form nella visualizzazione Maschera. Immettere le combinazioni di criteri seguenti. Fare clic su Cerca dopo ogni combinazione:

    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
    

Dopo aver visualizzato il set di risultati per ogni query, chiudere la finestra Foglio dati. Quindi, inizia la ricerca successiva. Ogni volta che si fa clic sul pulsante Cerca , i parametri nella query QBF filtrano i dati in base ai criteri di ricerca specificati nel modulo di query QBF.

Note sui criteri dei parametri QBF

La query QBF di esempio in questo articolo implementa i criteri nella query come

Forme! FormName! NomecontrolloO moduli! FormName! NomecontrolloÈ Null

per filtrare i dati. Questi criteri restituiscono tutti i record corrispondenti. Se il valore dei criteri è Null, tutti i record vengono restituiti per il campo specificato.

È possibile specificare uno dei criteri alternativi seguenti per restituire risultati leggermente diversi.

Nota

Nei criteri di esempio seguenti viene usato un carattere di sottolineatura (_) come carattere di continuazione della riga. Rimuovere il carattere di sottolineatura dalla fine della riga quando si ricreano questi criteri.

  • Come i moduli! FormName! ControlName& "*" o _ Forms! FormName! NomecontrolloÈ Null

    Questa istruzione criteri è la stessa dell'esempio QBF precedente, ad eccezione del fatto che è possibile eseguire query usando un carattere jolly. Ad esempio, se si immette "Jo" in un campo usando questa istruzione criteri, la query restituisce ogni record nel campo che inizia con "Jo". Questo include Johnson, Jones, Johanna e così via.

  • Tra i moduli! FormName! StartDate e moduli. FormName! EndDate o _ Forms! FormName! StartDate è Null

    È possibile utilizzare questa istruzione criteri per eseguire query su un campo data utilizzando le caselle di testo Data inizio e Data di fine nel modulo di query. Vengono restituiti i record le cui date di inizio e fine rientrano tra i valori specificati nel modulo di query. Se tuttavia si omette un valore data di inizio nel modulo, la query restituisce tutti i record, indipendentemente dal valore end date.

  • Come i moduli! FormName! ControlName& "*" o è Null

    Questa istruzione criteria restituisce entrambi i record che corrispondono ai criteri e ai record null. Se i criteri sono Null, vengono restituiti tutti i record. Si noti che l'asterisco (*) è considerato un parametro perché fa parte di un'espressione Like più grande. Poiché l'asterisco è un valore di criteri hardcoded (ad esempio, come "*"), vengono restituiti record con valori Null.

  • Come IIf(IsNull(Forms!FormName! [ControlName]), _ "*",[Forms]! [FormName]! [ControlName])

    Questa istruzione criteri restituisce tutti i record che corrispondono ai criteri. Se nel modulo di query non vengono specificati criteri, vengono restituiti tutti i record che non sono Null.

  • IIf(IsNull(Forms!FormName! [ControlName]), _ [FieldName],[Forms]! [FormName]! [ControlName])

    Vengono restituiti tutti i record che corrispondono ai criteri. Se non vengono specificati criteri nel modulo di query, vengono restituiti tutti i record che non sono Null (lo stesso risultato dell'esempio precedente).