Partager via


Fonction JetRetrieveColumns

S’applique à : Windows | Windows Server

Fonction JetRetrieveColumns

La fonction JetRetrieveColumns récupère plusieurs valeurs de colonne de l’enregistrement actif en une seule opération. Un tableau de structures JET_RETRIEVECOLUMN est utilisé pour décrire l’ensemble de valeurs de colonne à récupérer et pour décrire les mémoires tampons de sortie pour chaque valeur de colonne à récupérer.

    JET_ERR JET_API JetRetrieveColumns(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in_out_opt  JET_RETRIEVECOLUMN* pretrievecolumn,
      __in          unsigned long cretrievecolumn
    );

Paramètres

sesid

Session à utiliser pour cet appel.

tableid

Curseur à utiliser pour cet appel.

pretrievecolumn

Pointeur vers un tableau d’une ou plusieurs structures JET_RETRIEVECOLUMN . Chaque structure comprend des descriptions de la valeur de colonne à récupérer et de l’emplacement de stockage des données retournées.

cretrievecolumn

Nombre de structures JET_RETRIEVECOLUMN dans le tableau donné par prétrievecolumn.

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

Une valeur de numéro de séquence de colonne à valeurs multiples non valide a été passée dans pretinfo-itagSequence>. Les valeurs valides pour les numéros de séquence de colonnes à valeurs multiples sont 1 ou plus. La valeur 0 (zéro) est valide pour cette fonction, mais n’est pas valide pour JetRetrieveColumn.

JET_errBadColumnId

L’ID de colonne donné est en dehors des limites légales d’un ID de colonne.

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_errColumnNotFound

La colonne décrite par le columnid donné n’existe pas dans la table.

JET_errIndexTuplesCannotRetrieveFromIndex

Les colonnes indexées en tant que sous-chaînes ne peuvent pas être récupérées à partir de l’index, car seule une petite partie de la colonne est généralement présente dans chaque entrée d’index.

JET_errInvalidBufferSize

Dans certains cas, la mémoire tampon donnée pour la colonne de récupération doit être suffisamment dimensionnée pour retourner n’importe quelle valeur de colonne. Par exemple, les colonnes pouvant être levées par dépôt sont ajustées pour être cohérentes pour le contexte transactionnel de la session appelante et cet ajustement nécessite la mémoire tampon fournie par l’appelant. Si l’espace tampon est insuffisant, JET_errInvalidBufferSize est retourné et aucune donnée de colonne n’est retournée.

JET_errInvalidgrbit

Les options fournies sont inconnues ou une combinaison non conforme de paramètres de bits connus.

JET_errInvalidParameter

Un ou plusieurs des paramètres donnés sont incorrects. Cela peut se produire si le retinfo.cbStruct est plus petit que la taille de JET_RETINFO.

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.

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

JET_errNoCurrentRecord

Le curseur n’est pas positionné sur un enregistrement. Cela peut se produire pour de nombreuses raisons différentes. Par exemple, cela se produit si le curseur est actuellement positionné après le dernier enregistrement de l’index actuel.

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_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.

Windows XP : 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.

JET_wrnBufferTruncated

La valeur de colonne entière n’a pas pu être récupérée, car la mémoire tampon donnée est inférieure à la taille de la colonne.

En cas de réussite, les données des colonnes et la taille des colonnes sont retournées dans les mémoires tampons fournies décrites dans tableau de structures JET_RETRIEVECOLUMN . Si un itagSequence a été défini sur 0 (zéro) pour indiquer que le nombre d’instances d’un champ à valeurs multiples était souhaité au lieu des données de colonne, le nombre d’instances d’une colonne à valeurs multiples est retourné dans le champ itagSequence lui-même. Chaque structure JET_RETRIEVECOLUMN a un champ d’erreur qui contient des avertissements pour la colonne récupérée. Si la colonne a une valeur NULL , le code d’erreur est défini sur JET_wrnColumnNull.

En cas d’échec, l’emplacement du curseur reste inchangé et aucune donnée n’est copiée dans la mémoire tampon fournie.

Notes

JetRetrieveColumns prend en charge une fonctionnalité que JetRetrieveColumn ne fait pas. Il s’agit de la possibilité de récupérer le nombre d’instances d’une colonne à valeurs multiples. L’objectif de cette fonctionnalité est de permettre à une application de récupérer toutes les valeurs d’une colonne. Pour ce faire, vous pouvez d’abord déterminer le nombre de valeurs d’une colonne. Ensuite, leurs longueurs peuvent être déterminées en appelant à nouveau JetRetrieveColumns avec une structure JET_RETRIEVECOLUMN allouée pour chaque valeur afin de déterminer la longueur des données de colonne. Pour ce faire, transmettez des pointeurs pvData NULL avec cbMax de 0 (zéro) et récupérez la longueur de colonne dans cbActual. Le troisième et dernier appel peut être effectué avec la mémoire allouée pour les données de valeur de colonne.

Si une colonne récupérée est tronquée en raison d’une mémoire tampon de longueur insuffisante, l’API retourne JET_wrnBufferTruncated. Toutefois, les autres erreurs, JET_wrnColumnNull sont retournées uniquement dans le champ d’erreur dans JET_RETRIEVECOLUMN. La raison en est que les applications veulent souvent s’assurer que toutes les données ont été récupérées et que le renvoi de cette erreur à partir de JetRetrieveColumns facilite cette compréhension.

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
JET_RETRIEVECOLUMN
JetEnumerateColumns
JetRetrieveColumn
JetSetColumns