Freigeben über


Verwenden der Abfrage nach Formulartechnik (QBF) in Microsoft Access

Ursprüngliche KB-Nummer: 304428

Notiz

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

Übersicht

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 dem Sie Abfragekriterien eingeben. Dieses Formular enthält leere Textfelder. Jedes Textfeld stellt ein Feld in einer Tabelle dar, das Sie abfragen möchten. Sie erstellen Einträge nur in den Textfeldern, für die Sie Suchkriterien angeben möchten.

Das QBF-Formular ähnelt einem Dateneingabeformular mit Feldern, die den Feldern in einer Tabelle entsprechen. Eine Tabelle mit Feldern für Name, Adresse, Ort, Bundesland und POSTLEITZAHL kann ein QBF-Formular mit entsprechenden Feldern aufweisen. Zum Auswählen bestimmter Datensätze können Sie eine beliebige Kombination von Suchkriterien in das Formular eingeben. Sie können nur eine Stadt oder eine Stadt und ein Bundesland oder nur eine Postleitzahl oder eine beliebige andere Kombination angeben. Felder, die Sie leer lassen, werden ignoriert. Wenn Sie eine Befehlsschaltfläche im Formular auswählen, 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 "Bestellungen" 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. Wählen Sie nach jeder Kombination "Suchen" aus:

    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 die Schaltfläche "Suchen " auswählen, 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

Formt!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 geringfügig andere Ergebnisse zurückzugeben.

Notiz

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

  • Like Forms!**FormName**!**ControlName**& "*" Or _ Forms!**FormName**!**ControlName**Is Null

    Diese Kriterienausweisung ist identisch mit dem QBF-Beispiel, mit der Ausnahme, dass Sie mithilfe eines Wildcards abfragen können. Wenn Sie z. B. "Jo" in ein Feld eingeben, indem Sie diese Kriterienausweisung verwenden, gibt die Abfrage jeden Datensatz im Feld zurück, der mit "Jo" beginnt, einschließlich Johnson, Jones, Johanna usw.

  • Between Forms!**FormName**!StartDate And Forms!**FormName**!EndDate Or _ Forms!**FormName**!StartDate Is Null

    Mit dieser Kriterienaufweisung können Sie ein Datumsfeld abfragen, indem Sie Textfelder "Startdatum" und "Enddatum" im Abfrageformular verwenden. Datensätze, deren Anfangs- und Enddaten zwischen den Werten liegen, die Sie im Abfrageformular angeben, werden zurückgegeben. Wenn Sie jedoch einen Anfangsterminwert im Formular weglassen, gibt die Abfrage unabhängig vom Enddatumswert alle Datensätze zurück.

  • Wie Formulare!FormName!ControlName& "*" oder Ist Null

    Diese Criteria-Anweisung gibt beide Datensätze zurück, die den Kriterien und Datensätzen entsprechen, die null sind. Wenn die Kriterien null sind, werden alle Datensätze zurückgegeben. Das Sternchen (*) wird als Parameter betrachtet, da es Teil eines größeren Like-Ausdrucks ist. Da das Sternchen ein hartcodierter Kriterienwert ist (z. B. "*"), werden Datensätze mit NULL-Werten zurückgegeben.

  • Like 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 werden, 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 (dasselbe Ergebnis wie im Beispiel).