Partager via


Fonction JetSetCurrentIndex

S’applique à : Windows | Windows Server

Fonction JetSetCurrentIndex

La fonction JetSetCurrentIndex peut être utilisée pour définir l’index actuel d’un curseur. L’index actuel d’un curseur définit les enregistrements d’une table qui sont visibles par ce curseur et l’ordre dans lequel ils apparaissent en sélectionnant l’ensemble d’entrées d’index à utiliser pour exposer ces enregistrements.

    JET_ERR JET_API JetSetCurrentIndex(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in_opt      const tchar* szIndexName
    );

Paramètres

sesid

Session à utiliser pour cet appel.

tableid

Curseur à utiliser pour cet appel.

szIndexName

Nom de l’index à sélectionner pour le curseur.

Si ce paramètre a la valeur NULL ou une chaîne vide, l’index cluster est sélectionné. Si un index principal est défini pour la table, cet index sera sélectionné, car il est identique à l’index cluster. Si aucun index principal n’est défini pour la table, l’index séquentiel est sélectionné. L’index séquentiel n’a aucune définition d’index. Pour plus d’informations, consultez JetCreateIndex .

Si pindexid n’a pas la valeur NULL, le nom de l’index est ignoré et l’index est sélectionné par son ID d’index.

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_errBadItagSequence

Un index secondaire est sélectionné avec l’option JET_bitNoMove et il n’existe aucune valeur pour la première colonne clé à valeurs multiples dans la définition du nouvel index qui correspond au numéro de séquence spécifié.

JET_errClientRequestToStopJetService

Il n’est pas possible d’effectuer l’opération, car toutes les activités sur le instance associées à la session ont cessé à la suite d’un appel à JetStopService.

JET_errInvalidIndexId

Le contenu de l’ID d’index n’était pas valide ou a expiré et doit être actualisé. Cela peut se produire pour JetSetCurrentIndex dans les cas suivants :

  • pindexid-cbStruct> n’est pas de la taille attendue (Windows Server 2003 et versions ultérieures).

  • Le moteur a été arrêté depuis que l’ID d’index a été extrait.

  • Tous les curseurs référençant la table contenant l’index correspondant à l’ID d’index ont été fermés et le moteur a supprimé la définition de cet index du cache de schéma.

  • L’ID d’index est utilisé avec un curseur ouvert sur la table incorrecte.

  • L’index a été supprimé ou n’est pas encore visible pour la session.

JET_errInstanceUnavailable

Il n’est pas possible d’effectuer l’opération, 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.

Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures.

JET_errInvalidName

L’un des noms d’objets spécifiés n’était pas valide. Tous les noms d’objets doivent être conformes au même ensemble de règles. Ces règles sont les suivantes :

  • Les noms d’objets doivent être composés de caractères ASCII.

  • Les noms d’objets doivent comporter au moins un caractère.

  • Les noms d’objets ne peuvent pas dépasser JET_cbNameMost (64) caractères.

  • Les noms d’objets ne peuvent pas commencer par un espace.

  • Les noms d’objets ne peuvent pas contenir de caractères de contrôle ASCII (0x00 via 0x1F).

  • Les noms d’objets ne peuvent pas contenir de point d’exclamation (!), de point (.), de crochet gauche ([) ou de crochet droit (]).

  • Une fois validée, seule la partie de la chaîne jusqu’au premier espace (le cas échéant) sera utilisée pour le nom de l’objet. Cela signifie effectivement que les noms d’objets ne peuvent pas non plus contenir d’espace.

JET_errInvalidParameter

L’un des paramètres fournis contenait une valeur inattendue ou contenait une valeur qui n’était pas logique lorsqu’elle était combinée à la valeur d’un autre paramètre. Cela peut se produire pour JetSetCurrentIndex lorsque pindexid n’a pas la valeur NULL et que pindexid-cbStruct> n’est pas de la taille attendue (Windows XP et versions antérieures).

JET_errNoCurrentRecord

Un index secondaire est sélectionné avec l’option JET_bitNoMove et il n’existe aucune entrée d’index dans le nouvel index qui correspond à l’enregistrement associé à l’entrée d’index à la position actuelle du curseur sur l’ancien index.

JET_errNotInitialized

Il n’est pas possible d’effectuer l’opération, car le instance associé à la session n’a pas encore été initialisé.

JET_errOutOfCursors

Le moteur a épuisé son pool de ressources utilisées pour ouvrir les curseurs. Le nombre maximal de curseurs pouvant être ouverts à tout moment est contrôlé à l’aide de JET_paramMaxCursors. Pour plus d’informations, consultez JetSetSystemParameter . Cela peut se produire pour JetSetCurrentIndex lorsqu’un index secondaire a été sélectionné et que le moteur ne peut pas ouvrir un curseur interne pour utiliser cet index.

JET_errRestoreInProgress

Il n’est pas possible d’effectuer l’opération, 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.

Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures.

JET_errTermInProgress

Il n’est pas possible d’effectuer l’opération, car le instance associé à la session est en cours d’arrêt.

En cas de réussite, l’index actuel du curseur est défini sur l’index demandé. Les entrées d’index peuvent maintenant être recherchées à l’aide de JetSeek en fonction de la définition d’index de l’index demandé. Les entrées d’index peuvent également être énumérées à l’aide de JetMove dans l’ordre spécifié par cette définition d’index. La position actuelle du curseur est définie sur la première entrée d’index de l’index (JET_bitMoveFirst) ou sur une entrée d’index spécifique liée à la position actuelle du curseur sur l’ancien index (JET_bitNoMove). Aucune modification de l’état de la base de données ne se produira.

En cas d’échec, l’index actuel et la position actuelle du curseur sont dans un état non défini. Aucune modification de l’état de la base de données ne se produira.

Notes

Si l’indicateur d’ID d’index est obsolète, l’API échoue tout simplement. Il n’y a pas de secours au nom de texte de l’index dans ce cas, comme on peut s’y attendre. Ce secours doit être effectué manuellement par l’appelant de l’API.

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.

Unicode

Implémenté en tant que JetSetCurrentIndexW (Unicode) et JetSetCurrentIndexA (ANSI).

Voir aussi

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXID
JetCreateIndex
JetGetCurrentIndex
JetGetIndexInfo
JetGetTableIndexInfo
JetMove
JetSeek
JetSetCurrentIndex
JetSetSystemParameter
JetStopService