Suchen der aktuellen Position in einem DAO-Recordset
In einigen Situationen müssen Sie bestimmen, wie weit Sie die aktuelle Datensatzposition durch ein Recordset-Objekt verschoben haben, und möglicherweise die aktuelle Datensatzposition für einen Benutzer angeben. Beispielsweise möchten Sie die aktuelle Position auf einer Skala, einem Meter oder einem ähnlichen Steuerelement angeben. Zur Angabe der aktuellen Position stehen zwei Eigenschaften zur Verfügung: die AbsolutePosition-Eigenschaft und die PercentPosition-Eigenschaft .
Der Wert der AbsolutePosition-Eigenschaft ist die Position des aktuellen Datensatzes relativ zu 0. Stellen Sie sich diese Eigenschaft jedoch nicht als Datensatznummer vor. Wenn der aktuelle Datensatz nicht definiert ist, gibt die AbsolutePosition-Eigenschaft 1 zurück. Darüber hinaus gibt es keine Garantie, dass ein Datensatz die gleiche absolute Position hat, wenn das Recordset-Objekt neu erstellt wird, da die Reihenfolge der einzelnen Datensätze innerhalb eines Recordset-Objekts nicht garantiert wird, es sei denn, er wird mit einer SQL-Anweisung erstellt, die eine ORDER BY-Klausel enthält.
Die PercentPosition-Eigenschaft zeigt die aktuelle Position als Prozentsatz der Gesamtzahl der Datensätze an, die von der RecordCount-Eigenschaft angegeben werden. Da die RecordCount-Eigenschaft die Gesamtzahl der Datensätze im Recordset-Objekt erst wiedergibt, wenn das Recordset vollständig aufgefüllt wurde, gibt die PercentPosition-Eigenschaft nur die aktuelle Datensatzposition als Prozentsatz der Anzahl von Datensätzen an, auf die seit dem Öffnen des Recordset-Objekts zugegriffen wurde.
Um sicherzustellen, dass die PercentPosition-Eigenschaft die aktuelle Datensatzposition relativ zum gesamten Recordset-Objekt widerspiegelt, verwenden Sie die Methoden MoveLast und MoveFirst unmittelbar nach dem Öffnen des Recordset-Objekts. Dadurch wird das Recordset-Objekt vollständig aufgefüllt, bevor Sie die PercentPosition-Eigenschaft verwenden. Wenn Sie über ein großes Resultset verfügen, kann die Verwendung der MoveLast-Methode für Recordsets , die nicht vom Typ Tabelle sind, lange dauern.
Hinweis
Die PercentPosition-Eigenschaft ist nur eine Annäherung und sollte nicht als wichtiger Parameter verwendet werden. Diese Eigenschaft ist gut dazu geeignet, einen Indikator zu steuern, der den Fortschritt eines Benutzers anzeigt, der sich durch eine Reihe von Datensätzen bewegt. Beispielsweise möchten Sie möglicherweise ein Steuerelement, das den Prozentsatz der vollständigen Datensätze angibt.
Im folgenden Beispiel wird ein Recordset-Objekt für eine Tabelle namens Employees geöffnet. Die Prozedur wechselt dann durch die Tabelle Employees und verwendet die SysCmd-Methode , um eine Statusanzeige anzuzeigen, die den Prozentsatz der verarbeiteten Tabelle anzeigt. Wenn das Einstellungsdatum des Mitarbeiters vor dem 1. Januar 1993 liegt, wird der Text "Leitende Mitarbeiter" an das Feld Notizen angefügt.
Sub AddEmployeeNotes()
Dim dbsNorthwind As DAO.Database
Dim rstEmployees As DAO.Recordset
Dim strMsg As String
Dim intRet As Integer
Dim intCount As Integer
Dim strSQL As String
Dim sngPercent As Single
Dim varReturn As Variant
Dim lngEmpID() As Long
On Error GoTo ErrorHandler
Set dbsNorthwind = CurrentDb
strSQL = "SELECT * FROM Employees"
Set rstEmployees = dbsNorthwind.OpenRecordset(strSQL, dbOpenDynaset)
With rstEmployees
If .EOF Then ' If no records, exit.
Exit Sub
Else
strMsg = "Processing Employees table..."
intRet = SysCmd(acSysCmdInitMeter, strMsg, 100)
End If
Do Until .EOF
If !HireDate < #1/1/93# Then
.Edit
!Notes = !Notes & ";" & "Senior Staff"
.Update
End If
If .PercentPosition <> 0 Then
intRet = SysCmd(acSysCmdUpdateMeter, .PercentPosition)
End If
.MoveNext
Loop
End With
intRet = SysCmd(acSysCmdRemoveMeter)
rstEmployees.Close
dbsNorthwind.Close
Set rstEmployees = Nothing
Set dbsNorthwind = Nothing
Exit Sub
ErrorHandler:
MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
varReturn = SysCmd(acSysCmdSetStatus, " ")
End Sub
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.