Suchen nach einem Datensatz in einem DAO-Recordset vom Typ "Tabelle"

Mit der Seek-Methode können Sie einen Datensatz in einem Recordset-Objekt vom Typ "Tabelle" suchen.

Wenn Sie die Seek-Methode zum Suchen eines Datensatzes verwenden, verwendet das Access-Datenbankmodul den aktuellen Index der Tabelle, wie durch die Index-Eigenschaft definiert.

Hinweis

Wenn Sie die Seek-Methode für ein Recordset-Objekt vom Typ Tabelle verwenden, ohne zunächst den aktuellen Index festzulegen, tritt ein Laufzeitfehler auf.

Im folgenden Beispiel wird ein Recordset-Objekt vom Typ "Tabelle" mit dem Namen "Employees" geöffnet und mithilfe der Seek-Methode nach dem Datensatz gesucht, der den Wert "contosoEmpID " im Feld "EmployeeID" enthält. It returns the hire date for the specified employee.

Function GetHireDate(lngEmpID As Long) As Variant 
 
Dim dbsNorthwind As DAO.Database 
Dim rstEmployees As DAO.Recordset 
 
On Error GoTo ErrorHandler 
 
   Set dbsNorthwind = CurrentDB 
   Set rstEmployees = dbsNorthwind.OpenRecordset("Employees") 
 
   ' The index name for Employee ID. 
   rstEmployees.Index = "PrimaryKey" 
   rstEmployees.Seek "=", lngEmpID 
 
   If rstEmployees.NoMatch Then 
      GetHireDate = Null 
   Else 
      GetHireDate = rstEmployees!HireDate 
   End If 
 
   rstEmployees.Close 
   dbsNorthwind.Close 
 
   Set rstEmployees = Nothing 
   Set dbsNorthwind = Nothing 
 
Exit Function 
 
ErrorHandler: 
   MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description 
End Function

Die Seek-Methode beginnt immer am Anfang des Recordset-Objekts mit der Suche nach Datensätzen. Wenn sie die Seek-Methode mit denselben Argumenten mehr als einmal für dasselbe Recordset-Objekt verwenden, findet es denselben Datensatz.

Verwenden Sie die NoMatch-Eigenschaft für das Recordset-Objekt , um zu testen, ob ein Datensatz gefunden wurde, der den Suchkriterien entspricht. Wenn der Datensatz, der den Kriterien entspricht, gefunden wurde, ist die NoMatch-Eigenschaft "False". andernfalls ist dies "True".

Im folgenden Codebeispiel wird veranschaulicht, wie Sie eine Funktion erstellen können, die die Seek-Methode verwendet, um einen Datensatz mithilfe eines aus mehreren Feldern bestehenden Index zu finden.

Function GetFirstPrice(lngOrderID As Long, lngProductID As Long) As Variant 
 
Dim dbsNorthwind As DAO.Database 
Dim rstOrderDetail As DAO.Recordset 
 
On Error GoTo ErrorHandler 
 
   Set dbsNorthwind = CurrentDb 
   Set rstOrderDetail = dbsNorthwind.OpenRecordset("Order Details") 
 
   rstOrderDetail.Index = "PrimaryKey" 
   rstOrderDetail.Seek "=", lngOrderID, lngProductID 
 
   If rstOrderDetail.NoMatch Then 
      GetFirstPrice = Null 
   Else 
      GetFirstPrice = rstOrderDetail!UnitPrice 
   End If 
 
   rstOrderDetail.Close 
   dbsNorthwind.Close 
 
   Set rstOrderDetail = Nothing 
   Set dbsNorthwind = Nothing 
 
Exit Function 
 
ErrorHandler: 
   MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description 
End Function

In this example, the table's primary key consists of two fields: OrderID and ProductID. When you call the GetFirstPrice function with a valid (existing) combination of OrderID and ProductID field values, the function returns the unit price from the found record. Wenn die Kombination der in der Tabelle gewünschten Feldwerte nicht gefunden werden kann, gibt die Funktion den Null-Wert zurück.

Wenn der aktuelle Index ein Index mit mehreren Feldern ist, können nachfolgende Schlüsselwerte weggelassen werden und werden als Nullwerte behandelt. Das heißt, Sie können eine beliebige Anzahl von Schlüsselwerten vom Ende des Schlüsselarguments einer Seek-Methode weglassen, jedoch nicht vom Anfang oder der Mitte aus. Wenn Sie jedoch nicht alle Werte im Index angeben, können Sie nur die Vergleichszeichenfolge ">" oder "<" mit der Seek-Methode verwenden.

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.