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.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für