Anwenden eines Filters beim Öffnen eines Formulars oder BerichtsApply a filter when opening a form or report

Wenn Sie VBA-Code (Visual Basic for Applications) zum Öffnen eines Formulars oder Berichts verwenden, sollten Sie angeben, welche Datensätze angezeigt werden sollen.When you use Visual Basic for Applications (VBA) code to open a form or report, you may want to specify which records to display. Sie können die im Formular oder Bericht anzuzeigenden Datensätze auf mehrere Weisen angeben.You can specify the records to display in the form or report in several ways. Ein häufiger Ansatz besteht aus dem Anzeigen eines benutzerdefinierten Dialogfelds, in dem der Benutzer Kriterien für die zugrunde liegende Abfrage des Formulars oder Berichts eingibt.A common approach is to display a custom dialog box in which the user enters criteria for the underlying query of the form or report. Um die Kriterien abzurufen, verweisen Sie auf die Steuerelemente im Dialogfeld.To get the criteria, you refer to the controls in the dialog box. Die folgenden Abschnitte beschreiben drei Möglichkeiten für die Verwendung von Kriterien, die Sie in einem benutzerdefinierten Dialogfeld zum Filtern von Datensätzen eingegeben haben.The following sections describe three ways you can use criteria entered in a custom dialog box to filter records.

Verwenden des wherecondition-ArgumentsUsing the wherecondition argument

Das wherecondition-Argument der OpenForm- oder der OpenReport-Methode bzw. -Aktion ist die einfachste Möglichkeit zum Abrufen von Kriterien in Situationen, in denen ein Benutzer nur einen Wert angibt.The wherecondition argument of the OpenForm or OpenReport method or action is the simplest way to get criteria in situations where a user is providing only one value. Sie können beispielsweise ein Formular anzeigen, in dem Benutzer aufgefordert werden, eine Auftrags-ID für die Rechnung auszuwählen, die sie drucken möchten.For example, you could display a form that prompts users to select an order ID for the invoice they want to print. Wenn Sie eine Ereignisprozedur verwenden, können Sie einen Filter anwenden, der nur einen Datensatz anzeigt, indem Sie ein Argument zur OpenReport -Methode hinzufügen, wie in der folgenden Codezeile gezeigt wird:If you are using an event procedure, you can apply a filter that displays only one record by adding an argument to the OpenReport method, as shown in the following line of code:

DoCmd.OpenReport "Invoice", acViewPreview, , "OrderID = " & OrderID 

Die "OrderID = " im Filterausdruck verweist auf das Feld "OrderID" in der Abfrage, die dem Rechnungsbericht zugrunde liegt. "OrderID" auf der rechten Seite des Ausdrucks verweist auf den Wert, den der Benutzer in der Liste "OrderID" im Dialogfeld ausgewählt hat.The OrderID on the right side of the expression refers to the value the user selected from the OrderID list in the dialog box. Der Ausdruck verkettet die beiden, sodass der Wert nur die Rechnung für den vom Benutzer ausgewählten Datensatz enthält.The expression concatenates the two, causing the report to include only the invoice for the record the user selected.

Das wherecondition-Argument wird nur von der Ereignisprozedur angewendet, die für das OnClick-Ereignis der Schaltfläche angegeben wurde, die die OpenForm- oder die OpenReport-Methode ausführt.The wherecondition argument is applied only by the event procedure specified for the OnClick event of the button that runs the OpenForm or OpenReport method. So können Sie ganz flexibel eine beliebige Anzahl unterschiedlicher Dialogfelder verwenden, um dasselbe Formular oder denselben Bericht zu öffnen und unterschiedliche Gruppen von Kriterien anzuwenden, je nachdem, was der Benutzer tun möchte.This gives you the flexibility of using any number of different dialog boxes to open the same form or report and applying different sets of criteria depending on what the user wants to do. Vielleicht möchte der Benutzer eine Rechnung für einen bestimmten Kunden drucken oder Bestellungen nur für ein bestimmtes Produkt anzeigen.For example, the user may want to print an invoice for a certain customer or view orders only for a certain product.

Sie können das wherecondition-Argument verwenden, um Kriterien für mehrere Felder festzulegen. In diesem Fall wird das Argument aber schnell lang und kompliziert.You can use the wherecondition argument to set criteria for more than one field, but if you do, the argument setting quickly becomes long and complicated. In diesen Fällen kann das Angeben von Kriterien in einer Abfrage einfacher sein.In those situations, specifying criteria in a query may be easier.

Verwenden einer Abfrage als FilterUsing a query as a filter

Eine separate Abfrage, die manchmal als Filterabfrage bezeichnet wird, kann auf die Steuerelemente in Ihrem Dialogfeld verweisen, um dessen Kriterien abzurufen.A separate query, sometimes called a filter query, can refer to the controls on your dialog box to get its criteria. Mithilfe dieses Ansatzes können Sie die Datensätze in einem Formular oder Bericht filtern, indem Sie das filtername-Argument der OpenForm- oder OpenReport-Methode bzw. -Aktion auf den Namen der Filterabfrage festlegen, die Sie erstellen.Using this approach, you filter the records in a form or report by setting the filtername argument of the OpenForm or OpenReport method or action to the name of the filter query you create. Die Filterabfrage muss alle Tabellen in der Datensatzquelle des Formulars oder Berichts enthalten, das bzw. den Sie öffnen möchten.The filter query must include all tables in the record source of the form or report you are opening. Außerdem muss die Filterabfrage entweder alle Felder im Formular oder Bericht enthalten, das bzw. den Sie öffnen, oder Sie müssen die OutputAllFields-Eigenschaft auf Ja festlegen.Additionally, the filter query must either include all the fields in the form or report you are opening, or you must set its OutputAllFields property to Yes.

Nachdem Sie die Abfrage, die als Filter verwendet werden soll, erstellt und gespeichert haben, legen Sie das filtername-Argument der OpenReport-Methode oder -Aktion auf den Namen der Filterabfrage fest.After you create and save the query to use as a filter, set the filtername argument of the OpenReport method or action to the name of the filter query. Das filtername-Argument wendet die angegebene Filterabfrage bei jeder Ausführung der OpenReport-Methode an.The filtername argument applies the specified filter query each time the OpenReport method runs.

Das Verwenden eines Filters zum Festlegen der Kriterien hat ähnliche Vorteile wie das Verwenden des wherecondition-Arguments der OpenForm- oder der OpenReport-Methode.Using a query as a filter to set the criteria has advantages similar to using the wherecondition argument of the OpenForm or OpenReport method. Mit einer Filterabfrage können Sie ganz flexibel mehrere Dialogfelder verwenden, um dasselbe Formular oder denselben Bericht zu öffnen und unterschiedliche Gruppen von Kriterien anzuwenden, je nachdem, was der Benutzer tun möchte.A filter query gives you the same flexibility of using more than one dialog box to open the same form or report and applying different sets of criteria depending on what a user wants to do.

Direktes Verweisen auf Dialogfeld-Steuerelemente in der zugrunde liegenden Abfrage eines Formulars oder BerichtsDirectly referring to dialog box controls in the underlying query of a form or report

Sie können auch direkt auf die Dialogfeld-Steuerelemente in der zugrunde liegenden Abfrage eines Formulars oder Berichts verweisen anstatt die Argumente der OpenForm- oder der OpenReport-Methode zu verwenden.You can also refer to the dialog box controls directly in the underlying query of a form or report instead of through the arguments of the OpenForm or OpenReport method. Bei Verwendung dieses Ansatzes erfordert die OpenForm- oder OpenReport-Methode oder -Aktion kein wherecondition- oder filtername-Argument.Using this approach, the OpenForm or OpenReport method or action requires no wherecondition or filtername argument. Jedes Mal, wenn Sie ein Formular oder einen Bericht öffnen, sucht die zugrunde liegende Abfrage stattdessen nach dem Dialogfeld, um die Kriterien abzurufen.Instead, each time you open a form or report, its underlying query looks for the dialog box to get its criteria. Wenn ein Benutzer das Formular oder den Bericht allerdings im Datenbankfenster anstatt über das Dialogfeld öffnet, zeigt Access ein Parameterfeld an, das den Benutzer zur Eingabe des Dialogfeldwerts auffordert.However, if a user opens the form or report in the Database window rather than through your dialog box, Access displays a parameter box that prompts the user for the dialog box value.

Support und FeedbackSupport and feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation?Have questions or feedback about Office VBA or this documentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.