Función JetIndexRecordCount
Se aplica a: Windows | Windows Server
Función JetIndexRecordCount
La función JetIndexRecordCount cuenta el número de entradas del índice actual desde la posición actual hacia delante. La posición actual se incluye en el recuento. El recuento puede ser mayor que el número total de registros de la tabla si el índice actual se encuentra en una columna con varios valores y las instancias de la columna tienen varios valores. Si la tabla está vacía, se devolverá 0 para el recuento.
JET_ERR JET_API JetIndexRecordCount(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out unsigned long* pcrec,
__in unsigned long crecMax
);
Parámetros
sesid
La sesión que se va a usar para esta llamada.
tableid
Cursor que se va a usar para esta llamada.
pcrec
Puntero a un valor largo sin signo para recibir el recuento.
crecMax
Número máximo de registros que se van a contar. Un valor crecMax de 0 indica que el recuento es ilimitado.
Valor devuelto
Esta función devuelve el JET_ERR tipo de datos con uno de los siguientes códigos de retorno. Para obtener más información sobre los posibles errores de ESE, vea Extensible Storage Engine Errors and Error Handling Parameters.
Código devuelto |
Descripción |
---|---|
JET_errSuccess |
La operación se ha completado correctamente. |
JET_errClientRequestToStopJetService |
La operación no se puede completar porque toda la actividad de la instancia asociada a la sesión ha dejado de funcionar como resultado de una llamada a JetStopService. |
JET_errInstanceUnavailable |
La operación no se puede completar porque la instancia asociada a la sesión encontró un error irrecuperable que requiere que se revoque el acceso a todos los datos para proteger la integridad de esos datos. Windows XP: Este valor devuelto se introduce en Windows XP. |
JET_errNoCurrentRecord |
El cursor no está actualmente en un registro y la tabla no está vacía. Windows XP, Windows Server 2003, Windows 2000 Server y Windows 2000 Professional: Si el cursor se coloca en un índice o intervalo de índice vacío, JetIndexRecordCount devuelve erróneamente JET_errNoCurrentRecord. |
JET_errNotInitialized |
La operación no se puede completar porque la instancia asociada a la sesión aún no se ha inicializado. |
JET_errRestoreInProgress |
La operación no se puede completar porque hay una operación de restauración en curso en la instancia asociada a la sesión. |
JET_errSessionSharingViolation |
No se puede usar la misma sesión para más de un subproceso al mismo tiempo. Windows XP: Este valor devuelto se introduce en Windows XP. |
JET_errTermInProgress |
La operación no se puede completar porque la instancia asociada a la sesión se está cerrando. |
Si esta función se ejecuta correctamente, el número exacto de entradas de índice, incluida la posición actual y hasta crecMax (si no es 0), se devuelve en el long sin signo al que apunta pcrec.
Si se produce un error en esta función, no se realizan cambios en la memoria asignada en precpos.
Observaciones
Si la tabla no está vacía, el cursor debe colocarse en el registro desde el que comenzar el recuento. El recuento incluirá este registro y contará hasta el límite especificado en crecMax. Si crecMax es 0, la operación continuará contando hasta el final del índice.
Los intervalos de índice se pueden usar para construir limitaciones de fin de índice artificiales para el recuento. De este modo, los subrangos de un índice se pueden contar exactamente. El cursor debe colocarse en la primera fila del intervalo. Se debe realizar el final de la clave de intervalo y, a continuación, se debe usar JetSetIndexRange para establecer el intervalo superior, ya sea de forma inclusiva o exclusiva. Por último, se debe llamar a JetIndexRecordCount para contar exactamente el intervalo.
JetIndexRecordCount respeta la semántica de las transacciones y devuelve un recuento que es preciso para esta sesión en particular en su estado transaccional actual.
JetIndexRecordCount accede a las páginas hoja del índice para contar exactamente las entradas. Por lo tanto, puede realizar una gran cantidad de E/S y puede ser lento. La limitación crecMax debe usarse para evitar una carga excesiva. Si un rango es grande, es posible contar el intervalo de forma aproximada mediante JetGetRecordPosition.
Windows XP, Windows Server 2003, Windows 2000 Server y Windows 2000 Professional: Si el cursor se coloca en un índice o intervalo de índices vacío, JetIndexRecordCount devuelve erróneamente JET_errNoCurrentRecord en lugar de devolver un recuento de registros de cero. La aplicación debe comprobar si el índice o el intervalo de índices están vacíos en este caso.
Requisitos
Requisito | Value |
---|---|
Cliente |
Requiere Windows Vista, Windows XP o Windows 2000 Professional. |
Servidor |
Requiere Windows Server 2008, Windows Server 2003 o Windows 2000 Server. |
Encabezado |
Declarado en Esent.h. |
Library |
Use ESENT.lib. |
Archivo DLL |
Requiere ESENT.dll. |
Consulte también
JET_ERR
JET_SESID
JET_TABLEID
JetGetRecordPosition
JetSetIndexRange
JetStopService