Freigeben über


Filter-Eigenschaft (ADO)

Gilt für: Access 2013, Office 2013

Gibt einen Filter für Daten in einem Recordset an.

Einstellungen und Rückgabewerte

Legt einen Variant -Wert fest oder gibt ihn zurück, der Folgendes enthalten kann:

  • Kriterienzeichenfolge - eine Zeichenfolge aus einer oder mehreren Klauseln, die mit AND - oder OR -Operatoren verkettet sind.

  • Textmarkenarray - ein Array mit eindeutigen Textmarkenwerten, die auf Datensätze im Recordset -Objekt verweisen.

  • Ein FilterGroupEnum-Wert.

Hinweise

Verwenden Sie die Filter-Eigenschaft, um Datensätze in einem Recordset-Objekt gezielt herauszufiltern. Das gefilterte Recordset-Objekt wird zum aktuellen Cursor. Andere Eigenschaften, deren Rückgabewerte auf dem aktuellen Cursor basieren, werden dadurch beeinflusst, wie z. B. AbsolutePosition, AbsolutePage, RecordCount und PageCount. Das liegt daran, dass der aktuelle Datensatz durch das Festlegen der Filter-Eigenschaft auf einen bestimmten Wert zum ersten Datensatz wechselt, der dem neuen Wert entspricht.

Die Kriterienzeichenfolge besteht aus Klauseln im Format FieldName-Operator-Value (z. B. "LastName = 'Smith'"). Sie können Verbundklauseln erstellen, indem Sie einzelne Klauseln mit AND verketten (z. B. "LastName = 'Smith' AND FirstName = 'John'") oder OR (z. B. ). Sie können Verbundklauseln erstellen, indem Sie einzelne Klauseln mit AND verketten (z. B. "LastName = 'Smith' AND FirstName = 'John'") oder OR (z. B. "LastName = 'Smith' OR LastName = 'Jones'"). Halten Sie sich für Kriterienzeichenfolgen an die folgenden Richtlinien:

  • Feldname muss ein gültiger Feldname aus dem Recordset-Objekt sein. Wenn der Feldname Leerzeichen enthält, müssen Sie ihn in eckige Klammern einschließen.

  • Der Operator muss einer der folgenden Sein: <, , >=<, =, <>>, = oder LIKE.

  • Value ist der Wert, mit dem Sie die Feldwerte vergleichen (z. B. "Smith", #8/24/95#, 12,345 oder $50,00). Verwenden Sie einfache Anführungszeichen mit Zeichenfolgen und Nummernzeichen (#) mit Datumsangaben. Bei Zahlen können Sie Dezimalzeichen, Dollarzeichen und die wissenschaftliche Schreibweise verwenden. Wenn LIKE als Operator fungiert, kann Wert Platzhalterzeichen enthalten. Nur das Sternchen (*) und das Prozentzeichen (%) sind zulässige Platzhalterzeichen und müssen das letzte Zeichen in der Zeichenfolge sein. Wert darf nicht Null sein.

    Hinweis

    Wenn einzelne Anführungszeichen in den Filterwert eingeschlossen werden sollen, verwenden Sie zwei einzelne Anführungszeichen zur Darstellung. Soll beispielsweise nach "O'Malley" gefiltert werden, lautet die Kriterienzeichenfolge "col1 = 'O''Malley'". Setzen Sie die Zeichenfolge zwischen Nummernzeichen (#), um einzelne Anführungszeichen am Anfang und am Ende des Filterwerts einzuschließen. Wenn Sie z. B. nach '1' filtern möchten, muss die Kriterienzeichenfolge "col1 = #'1'#" lauten.

  • Es gibt keinen Vorrang zwischen AND und OR. Die Klauseln können in Klammern zusammengefasst werden. Sie können jedoch keine Klauseln gruppieren, die durch ein OR verknüpft sind, und dann die Gruppe mit einer anderen Klausel mit einem UND verbinden, wie im folgenden Codeausschnitt gezeigt:
    (LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'

  • Diesen Filter müssten Sie stattdessen folgendermaßen erstellen:
    (LastName = 'Smith' AND FirstName = 'John') OR (LastName = 'Jones' AND FirstName = 'John')

  • In einer LIKE-Klausel können Sie am Anfang und Ende des Musters (z. B. LastName Like '*mit*') oder nur am Ende des Musters (z. B. LastName Like 'Smit*') einen Wildcard verwenden.

Die Filterkonstanten vereinfachen das Lösen einzelner Datensatzkonflikte bei der Batchaktualisierung, indem Sie beispielsweise nur die Datensätze anzeigen, die durch den letzten Aufruf der UpdateBatch-Methode beeinflusst wurden.

Die Filter-Eigenschaft direkt festzulegen schlägt möglicherweise wegen Konflikten mit den zugrunde liegenden Daten fehl (z. B. wenn ein Datensatz bereits von einem anderen Benutzer gelöscht wurde). In diesem Fall gibt der Anbieter Warnungen an die Errors-Auflistung zurück, hält die Programmausführung jedoch nicht an. Ein Laufzeitfehler tritt nur dann auf, wenn bei allen angeforderten Datensätzen Konflikte bestehen. Suchen Sie mithilfe der Status-Eigenschaft nach Datensätzen mit Konflikten.

Das Festlegen der Filter -Eigenschaft auf eine leere Zeichenfolge ("") hat denselben Effekt wie die Verwendung der Konstante adFilterNone.

Sobald die Filter -Eigenschaft festgelegt wird, wechselt die aktuelle Datensatzposition zum ersten Datensatz in der gefilterten Teilmenge der Datensätze im Recordset -Objekt. Wird die Filter -Eigenschaft deaktiviert, wechselt dementsprechend die aktuelle Datensatzposition zum ersten Datensatz im Recordset -Objekt.

Unter der Bookmark-Eigenschaft finden Sie eine Erklärung der Textmarkenwerte, aus denen Sie ein Array zur Verwendung mit der Filter -Eigenschaft erstellen können.

Nur Filter in Form von Kriterienzeichenfolgen (z. B. OrderDate > '31.12.1999') wirken sich auf den Inhalt eines persistenten Recordsets aus. Filter, die mit einem Array aus Textmarken oder mithilfe eines Werts aus FilterGroupEnum erstellt wurden, haben keinen Einfluss auf den Inhalt des permanenten Recordsets. Diese Regeln gelten für Recordset-Objekte, die mit clientbasierten oder serverbasierten Cursorn erstellt wurden.

Hinweis

Wenn Sie das AdFilterPendingRecords-Flag auf ein gefiltertes und geändertes Recordset-Objekt im Batchaktualisierungsmodus anwenden, ist das resultierende Recordset leer, wenn die Filterung auf dem Schlüsselfeld einer Tabelle mit nur einem Schlüssel basiert und die Änderung an den Schlüsselfeldwerten vorgenommen wurde. Das resultierende Recordset ist nicht leer, wenn eine der folgenden Aussagen zutrifft:

  • Die Filterung basierte in einer Tabelle mit einem Schlüssel auf Nichtschlüsselfeldern.
  • Die Filterung basierte in einer Tabelle mit mehreren Schlüsseln auf allen Feldern.
  • Änderungen wurden in einer Tabelle mit einem Schlüssel zu Nichtschlüsselfeldern vorgenommen.
  • Änderungen wurden in einer Tabelle mit mehreren Schlüsseln zu allen Feldern vorgenommen.

In der folgenden Tabelle werden die Auswirkungen von adFilterPendingRecords in verschiedenen Kombinationen von Filterung und Änderungen zusammengefasst. In der linken Spalte werden die möglichen Änderungen angezeigt. Änderungen können an jedem der Felder ohne Schlüssel, am Schlüsselfeld in einer Tabelle mit nur einem Schlüssel oder an einem der Schlüsselfelder in einer Tabelle mit mehreren Schlüsseln vorgenommen werden. Die oberste Zeile zeigt das Filterkriterium; Die Filterung kann auf einem der Felder ohne Schlüssel, dem Schlüsselfeld in einer Tabelle mit nur einem Schlüssel oder einem der Schlüsselfelder in einer Tabelle mit mehreren Schlüsseln basieren. Die sich überschneidenden Zellen zeigen die Ergebnisse an: + bedeutet, dass das Anwenden von adFilterPendingRecords zu einem nicht leeren Recordset führt; - bezeichnet ein leeres Recordset.


Nichtschlüssel

Ein Schlüssel

Mehrere Schlüssel

Nichtschlüssel

+

+

+

Ein Schlüssel

+

-

Nicht zutreffend

Mehrere Schlüssel

+

+