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

Sie verwenden die Seek-Methode , um einen Datensatz in einem Recordset-Objekt vom Typ Tabelle zu suchen.

Wenn Sie die Seek-Methode verwenden, um einen Datensatz zu suchen, verwendet die Access-Datenbank-Engine 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 Tabellentyp Employees geöffnet, und es wird die Seek-Methode verwendet, um den Datensatz mit dem Wert lngEmpID im Feld EmployeeID zu suchen. 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 gefunden wurde, der den Kriterien entspricht, lautet die NoMatch-EigenschaftFalse; Andernfalls lautet sie 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 gewünschte Kombination von Feldwerten in der Tabelle 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 und als NULL-Werte behandelt werden. Das heißt, Sie können eine beliebige Anzahl von Schlüsselwerten vom Ende des Schlüsselarguments einer Seek-Methode auslassen, jedoch nicht vom Anfang oder der Mitte. 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.