Verwenden der QBF-Technik (Query by Form) in Microsoft Access

Ursprüngliche KB-Nummer: 304428

Hinweis

Erfordert grundlegende Makro-, Codierungs- und Interoperabilitätskenntnisse. Dieser Artikel gilt nur für eine Microsoft Access-Datenbank (.mdb oder .accdb).

Zusammenfassung

In diesem Artikel erfahren Sie, wie Sie mithilfe eines Formulars die Kriterien für eine Abfrage angeben. Diese Technik wird als Abfrage nach Formular (QBF) bezeichnet.

Weitere Informationen

In der QBF-Technik erstellen Sie ein Formular, in das Sie Abfragekriterien eingeben. Dieses Formular enthält leere Textfelder. Jedes Textfeld stellt ein Feld in einer Tabelle dar, das Sie abfragen möchten. Einträge werden nur in den Textfeldern vorgenommen, für die Sie Suchkriterien angeben möchten.

Das QBF-Formular ähnelt einem Dateneingabeformular mit Feldern, die mit den Feldern in einer Tabelle übereinstimmen. Eine Tabelle mit Feldern für Name, Adresse, Ort, Bundesland und Postleitzahl kann ein QBF-Formular mit entsprechenden Feldern enthalten. Um bestimmte Datensätze auszuwählen, können Sie eine beliebige Kombination von Suchkriterien in das Formular eingeben. Sie können nur eine Stadt, eine Stadt und einen Bundesstaat oder nur eine Postleitzahl oder eine beliebige andere Kombination angeben. Felder, die Sie leer lassen, werden ignoriert. Wenn Sie auf eine Befehlsschaltfläche im Formular klicken, führt Access eine Abfrage aus, die die Suchkriterien aus Ihrem Formular verwendet.

Führen Sie die folgenden Schritte aus, um die QBF-Technik zu verwenden:

  1. Öffnen Sie die Beispieldatenbank Northwind.mdb.

  2. Erstellen Sie ein neues Formular, das nicht auf einer Tabelle oder Abfrage basiert, und speichern Sie es als QBF_Form.

  3. Erstellen Sie im neuen Formular zwei Textfelder und eine Befehlsschaltfläche mit den folgenden Eigenschaften. Speichern Sie dann das Formular:

    Text box 1
    ------------------
    Name: WhatCustomer
    
    Text box 2
    ------------------
    Name: WhatEmployee
    
    Command button 1:
    ------------------
    Caption: Search
    OnClick: QBF_Macro
    
  4. Erstellen Sie das folgende neue Makro, und speichern Sie es dann als QBF_Macro:

    Action: OpenQuery
    Query Name: QBF_Query
    View: Datasheet
    Data Mode: Edit
    
  5. Erstellen Sie die folgende neue Abfrage, die auf der Tabelle Orders basiert, und speichern Sie sie dann als 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. Öffnen Sie QBF_Form in der Formularansicht. Geben Sie die folgenden Kombinationen von Kriterien ein. Klicken Sie nach jeder Kombination auf Suchen:

    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
    

Nachdem Sie das Resultset für jede Abfrage angezeigt haben, schließen Sie das Datenblattfenster. Beginnen Sie dann mit der nächsten Suche. Jedes Mal, wenn Sie auf die Schaltfläche Suchen klicken, filtern die Parameter in der QBF-Abfrage die Daten basierend auf den Suchkriterien, die Sie im QBF-Abfrageformular angegeben haben.

Hinweise zu den QBF-Parameterkriterien

Die QBF-Beispielabfrage in diesem Artikel implementiert Kriterien in der Abfrage als

Formen! FormName! ControlNameOder Formulare! FormName! ControlNameIst NULL

, um die Daten zu filtern. Diese Kriterien geben alle übereinstimmenden Datensätze zurück. Wenn der Kriterienwert NULL ist, werden alle Datensätze für das angegebene Feld zurückgegeben.

Sie können eines der folgenden alternativen Kriterien angeben, um leicht unterschiedliche Ergebnisse zurückzugeben.

Hinweis

In den folgenden Beispielkriterien wird ein Unterstrich (_) als Zeilenfortsetzungszeichen verwendet. Entfernen Sie den Unterstrich vom Ende der Zeile, wenn Sie diese Kriterien neu erstellen.

  • Wie Formulare! FormName! ControlName& "*" oder _ Forms! FormName! ControlNameIst NULL

    Diese Criteria-Anweisung ist identisch mit dem obigen QBF-Beispiel, mit der Ausnahme, dass Sie abfragen können, indem Sie einen Wildcard verwenden. Wenn Sie beispielsweise "Jo" mithilfe dieser Criteria-Anweisung in ein Feld eingeben, gibt die Abfrage jeden Datensatz in dem Feld zurück, der mit "Jo" beginnt. Dazu gehören Johnson, Jones, Johanna und so weiter.

  • Zwischen Formularen! FormName! StartDate und Formulare! FormName! EndDate oder _ Forms! FormName! StartDate ist NULL

    Sie können diese criteria-Anweisung verwenden, um ein Datumsfeld mithilfe der Textfelder Startdatum und Enddatum im Abfrageformular abzufragen. Datensätze, deren Start- und Enddatum zwischen den Werten liegen, die Sie im Abfrageformular angeben, werden zurückgegeben. Wenn Sie jedoch einen Startdatumswert im Formular weglassen, gibt die Abfrage alle Datensätze zurück, unabhängig vom Enddatum-Wert.

  • Wie Formulare! FormName! ControlName& "*" oder ist NULL

    Diese Criteria-Anweisung gibt sowohl Datensätze zurück, die den Kriterien entsprechen, als auch Datensätze, die NULL sind. Wenn die Kriterien NULL sind, werden alle Datensätze zurückgegeben. Beachten Sie, dass das Sternchen (*) als Parameter angesehen wird, da es Teil eines größeren Like-Ausdrucks ist. Da das Sternchen ein hartcodierter Kriterienwert ist (z. B. wie "*"), werden Datensätze mit NULL-Werten zurückgegeben.

  • Wie IIf(Isnull(Forms!FormName! [ControlName]), _ "*",[Forms]! [FormName]! [ControlName])

    Diese Criteria-Anweisung gibt alle Datensätze zurück, die den Kriterien entsprechen. Wenn im Abfrageformular keine Kriterien angegeben sind, werden alle Datensätze zurückgegeben, die nicht NULL sind.

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

    Dadurch werden alle Datensätze zurückgegeben, die den Kriterien entsprechen. Wenn im Abfrageformular keine Kriterien angegeben werden, werden alle Datensätze zurückgegeben, die nicht NULL sind (das gleiche Ergebnis wie im obigen Beispiel).