Partager via


Fonction JetIndexRecordCount

S’applique à : Windows | Windows Server

Fonction JetIndexRecordCount

La fonction JetIndexRecordCount compte le nombre d’entrées dans l’index actuel à partir de la position actuelle vers l’avant. La position actuelle est incluse dans le nombre. Le nombre peut être supérieur au nombre total d’enregistrements dans la table si l’index actuel se trouve sur une colonne à valeurs multiples et que les instances de la colonne ont plusieurs valeurs. Si la table est vide, 0 est retourné pour le nombre.

    JET_ERR JET_API JetIndexRecordCount(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out         unsigned long* pcrec,
      __in          unsigned long crecMax
    );

Paramètres

sesid

Session à utiliser pour cet appel.

tableid

Curseur à utiliser pour cet appel.

pcrec

Pointeur vers une valeur longue non signée pour recevoir le nombre.

crecMax

Nombre maximal d’enregistrements à compter. Une valeur crecMax de 0 indique que le nombre est illimité.

Valeur renvoyée

Cette fonction retourne le type de données JET_ERR avec l’un des codes de retour suivants. Pour plus d’informations sur les erreurs ESE possibles, consultez Erreurs du moteur de stockage extensible et Paramètres de gestion des erreurs.

Code de retour

Description

JET_errSuccess

L’opération s’est terminée avec succès.

JET_errClientRequestToStopJetService

L’opération ne peut pas se terminer, car toutes les activités sur le instance associée à la session ont cessé à la suite d’un appel à JetStopService.

JET_errInstanceUnavailable

L’opération ne peut pas se terminer, car le instance associé à la session a rencontré une erreur irrécupérable qui exige que l’accès à toutes les données soit révoqué pour protéger l’intégrité de ces données.

Windows XP : Cette valeur de retour est introduite dans Windows XP.

JET_errNoCurrentRecord

Le curseur ne se trouve pas actuellement sur un enregistrement et la table n’est pas vide.

Windows XP, Windows Server 2003, Windows 2000 Server et Windows 2000 Professionnel : Si le curseur est positionné sur un index ou une plage d’index vide, JetIndexRecordCount retourne par erreur JET_errNoCurrentRecord.

JET_errNotInitialized

L’opération ne peut pas se terminer, car le instance associé à la session n’a pas encore été initialisé.

JET_errRestoreInProgress

L’opération ne peut pas se terminer, car une opération de restauration est en cours sur le instance associé à la session.

JET_errSessionSharingViolation

La même session ne peut pas être utilisée pour plusieurs threads en même temps.

Windows XP : Cette valeur de retour est introduite dans Windows XP.

JET_errTermInProgress

L’opération ne peut pas se terminer, car le instance associé à la session est en cours d’arrêt.

Si cette fonction réussit, le nombre exact d’entrées d’index, y compris la position actuelle et jusqu’à crecMax (si ce n’est pas 0), est retourné dans le long non signé pointé vers pcrec.

Si cette fonction échoue, aucune modification n’est apportée à la mémoire allouée au moment des précpos.

Notes

Si la table n’est pas vide, le curseur doit être positionné sur l’enregistrement à partir duquel commencer le nombre. Le nombre inclut cet enregistrement et le compte est transféré jusqu’à la limite donnée dans crecMax. Si crecMax a la valeur 0, l’opération continue de compter jusqu’à la fin de l’index.

Les plages d’index peuvent être utilisées pour construire des limitations artificielles de fin d’index pour le nombre. De cette façon, les sous-plages d’un index peuvent être comptées exactement. Le curseur doit être positionné sur la première ligne de la plage. La fin de la clé de plage doit être effectuée, puis JetSetIndexRange doit être utilisé pour définir la plage supérieure, de manière inclusive ou exclusive. Enfin, JetIndexRecordCount doit être appelé pour compter exactement la plage.

JetIndexRecordCount obéit à la sémantique de transaction et retourne un nombre précis pour cette session particulière dans son état transactionnel actuel.

JetIndexRecordCount accède aux pages feuilles d’index afin de compter exactement les entrées. Par conséquent, il peut effectuer une grande quantité d’E/S et peut être lent. La limitation crecMax doit être utilisée pour éviter une charge excessive. Si une plage est grande, il peut être possible de compter la plage de manière approximative à l’aide de JetGetRecordPosition.

Windows XP, Windows Server 2003, Windows 2000 Server et Windows 2000 Professionnel : Si le curseur est positionné sur un index ou une plage d’index vide, JetIndexRecordCount retourne par erreur JET_errNoCurrentRecord plutôt que de retourner un nombre d’enregistrements égal à zéro. L’application doit case activée pour voir si l’index ou la plage d’index est vide dans ce cas.

Spécifications

Condition requise Valeur

Client

Nécessite Windows Vista, Windows XP ou Windows 2000 Professionnel.

Serveur

Nécessite Windows Server 2008, Windows Server 2003 ou Windows 2000 Server.

En-tête

Déclaré dans Esent.h.

Bibliothèque

Utilisez ESENT.lib.

DLL

Nécessite ESENT.dll.

Voir aussi

JET_ERR
JET_SESID
JET_TABLEID
JetGetRecordPosition
JetSetIndexRange
JetStopService