Recordset.FindFirst-Methode (DAO)

Gilt für: Access 2013, Office 2013

Sucht den ersten Datensatz in einem Recordset-Objekt vom "dynaset"- oder "snapshot"-Typ, der die angegebenen Kriterien erfüllt, und macht den Datensatz zum aktuellen Datensatz (nur Microsoft Access-Arbeitsbereiche).

Syntax

Ausdruck . FindFirst(Criteria)

Ausdruck Eine Variable, die ein Recordset-Objekt darstellt.

Parameter

Name

Erforderlich/optional

Datentyp

Beschreibung

Kriterium

Erforderlich

String

Eine Zeichenfolge, die zum Suchen des Datensatzes verwendet wird. Entspricht der WHERE-Klausel in einer SQL-Anweisung, allerdings ohne das Wort "WHERE".

Hinweise

Wenn Sie alle Datensätze in die Suche einschließen möchten (nicht nur die, die eine bestimmte Bedingung erfüllen), verwenden Sie die Move-Methoden, um zwischen Datensätzen zu wechseln. To locate a record in a table-type Recordset, use the Seek method.

Wenn ein Datensatz, der die Bedingungen erfüllt, nicht gefunden wird, ist der aktuelle Datensatzverweis unbekannt und die NoMatch -Eigenschaft wird auf True festgelegt. Wenn das Recordset mehrere Datensätze enthält, die die Kriterien erfüllen, sucht FindFirst das erste Auftreten, FindNext sucht das nächste Auftreten usw.

Jede der Find-Methoden beginnt die Suche an der Position und in der Richtung, die in der folgenden Tabelle angegeben sind.

Find-Methode

Beginnt die Suche bei

Suchrichtung

FindFirst

Anfang des Recordsets

Ende des Recordsets

FindLast

Ende des Recordsets

Anfang des Recordsets

FindNext

Aktueller Datensatz

Ende des Recordsets

FindPrevious

Aktueller Datensatz

Anfang des Recordsets

Das Verwenden einer der Find -Methoden entspricht jedoch nicht dem Verwenden einer Move -Methode, die einfach den ersten, letzten, nächsten oder vorherigen Datensatz zum aktuellen Datensatz macht, ohne eine Bedingung anzugeben. You can follow a Find operation with a Move operation.

Always check the value of the NoMatch property to determine whether the Find operation has succeeded. If the search succeeds, NoMatch is False. Andernfalls ist NoMatch gleich True und der aktuelle Datensatz wird nicht definiert. In diesem Fall müssen Sie den aktuellen Datensatzzeiger zurück auf einen gültigen Datensatz richten.

Das Verwenden der Find-Methoden kann für Datensätze, auf die über mit dem Microsoft Access-Datenbankmodul verbundene ODBC-Datenbanken zugegriffen wird, ineffizient sein. Das Neuformulieren der Kriterien zum Suchen eines bestimmten Datensatzes kann schneller sein, besonders, wenn Sie mit großen Recordsets arbeiten.

Wenn Sie mit ODBC-Zugriffsrecordsets, die mit dem Microsoft Access-Datenbankmodul verbunden sind, und großen Recordset -Objekten vom Typ "Dynaset" arbeiten, bemerken Sie möglicherweise, dass das Verwenden der Find -Methoden oder der Sort - oder Filter -Eigenschaft langsam ist. To improve performance, use SQL queries with customized ORDER BY or WHERE clauses, parameter queries, or QueryDef objects that retrieve specific indexed records.

Sie sollten das US-Datumsformat (Monat-Tag-Jahr) verwenden, wenn Sie nach Feldern suchen, die Datumsangaben enthalten, auch wenn Sie nicht die US-Version der Microsoft Access-Datenbank-Engine verwenden. Andernfalls werden die Daten möglicherweise nicht gefunden. Verwenden Sie die Visual Basic-Funktion Format , um das Datum zu konvertieren. Zum Beispiel:

    rstEmployees.FindFirst "HireDate > #" _ 
        & Format(mydate, 'm-d-yy' ) & "#" 

Wenn die Kriterien aus einer Zeichenfolge bestehen, die mit einem nicht ganzzahligen Wert verkettet ist, und die Systemparameter ein nicht für die USA gültiges Dezimalzeichen, z. B. ein Komma, angeben (Beispiel: strSQL = "PRICE > " & lngPrice und lngPrice = 125,50), tritt beim Versuch, die Methode aufzurufen, ein Fehler auf. Der Grund ist, dass die Zahl bei der Verkettung mithilfe des Standarddezimalzeichens des Systems in eine Zeichenfolge umgewandelt wird und Microsoft Access SQL nur für die USA gültige Dezimalzeichen akzeptiert.

Hinweis

Um die bestmögliche Leistung zu erzielen, sollten die Kriterien in der Form "Feld = Wert" vorliegen, wobei Feld ein indiziertes Feld in der zugrunde liegenden Basistabelle ist, oder in der Form "Feld LIKE Präfix", wobei Feld ein indiziertes Feld in der zugrunde liegenden Basistabelle und Präfix eine Präfixsuchzeichenfolge ist (z. B. "ART*").

Allgemein stellt die Seek-Methode für ähnliche Suchtypen eine bessere Leistung als die Find-Methoden bereit. Dabei wird angenommen, dass nur Tabellentyp-Recordset-Objekte Ihre Anforderungen erfüllen können.

Beispiel

Das folgende Beispiel zeigt das Verwenden der FindFirst- und FindNext-Methoden zum Suchen eines Datensatzes in einem Recordset.

Der Beispielcode stammt von:Microsoft Access 2010 Programmer's Reference.

    Sub FindOrgName()
    
        Dim dbs As DAO.Database
        Dim rst As DAO.Recordset
        
        'Get the database and Recordset
        Set dbs = CurrentDb
        Set rst = dbs.OpenRecordset("tblCustomers")
    
        'Search for the first matching record   
        rst.FindFirst "[OrgName] LIKE '*parts*'"
        
        'Check the result
        If rst.NoMatch Then
            MsgBox "Record not found."
            GotTo Cleanup
        Else
            Do While Not rst.NoMatch
                MsgBox "Customer name: " & rst!CustName
                rst.FindNext "[OrgName] LIKE '*parts*'"
            Loop
    
            'Search for the next matching record
            rst.FindNext "[OrgName] LIKE '*parts*'"
        End If
       
        Cleanup:
            rst.Close
            Set rst = Nothing
            Set dbs = Nothing
    
    End Sub