Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En algunas situaciones, necesita determinar cuánto se ha movido en un objeto Recordset la posición del registro actual y, quizás, indicar la posición del registro actual a un usuario. Por ejemplo, puede que quiera indicar la posición actual en un dial, un medidor u otro tipo de control similar. Hay disponibles dos propiedades que permiten indicar la posición actual: AbsolutePosition y PercentPosition.
El valor de propiedad AbsolutePosition es la posición del registro actual en relación con 0. Sin embargo, no piense en esta propiedad como un número de registro; si el registro actual no está definido, la propiedad AbsolutePosition devuelve 1. Además, no hay ninguna garantía de que un registro tenga la misma posición absoluta si se recrea el objeto Recordset, ya que no se garantiza el orden de los registros individuales dentro de un objeto Recordset, excepto si se crea con una instrucción SQL en la que se incluye una cláusula ORDER BY.
En la propiedad PercentPosition, se muestra la posición actual expresada como un porcentaje del número total de registros indicado por la propiedad RecordCount. Como la propiedad RecordCount no refleja el número total de registros en el objeto Recordset hasta que se rellene por completo el objeto Recordset, la propiedad PercentPosition refleja únicamente la posición del registro actual como un porcentaje del número de registros al que se obtuvo acceso desde que se abrió el objeto Recordset.
Para asegurarse de que en la propiedad PercentPosition se refleje la posición del registro actual relativa a todo el objeto Recordset, use los métodos MoveLast y MoveFirst inmediatamente después de abrir el objeto Recordset. Esto rellena por completo el objeto Recordset antes de usar la propiedad PercentPosition. Si tiene un conjunto de resultados grande y usa el método MoveLast, puede que tarde bastante tiempo en ejecutarse para los conjuntos de registros que no sean de tipo tabla.
Nota:
La propiedad PercentPosition es sólo una aproximación y no se debe utilizar como un parámetro crítico. Esta propiedad está especialmente indicada para controlar un indicador que marque el progreso del usuario mientras éste se mueve por un conjunto de registros. Por ejemplo, puede necesitar un control que indique el porcentaje de registros completados.
El ejemplo siguiente abre un objeto Recordset en una tabla denominada Employees (Empleados). A continuación, el procedimiento se mueve por dicha tabla y utiliza el método SysCmd para mostrar una barra de progreso con el porcentaje de la tabla que se ha procesado. Si la fecha contratación del empleado es anterior al 1 de enero de 1993, el texto "Senior Staff" (Empleado veterano) se agregará al campo Notes (Notas).
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
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.