Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Access 2013, Office 2013
Interface IADORecordBinding
Les extensions Microsoft Visual C++ pour ADO associent, ou lient, des champs d'un objet Recordset à des variables C/C++. Chaque fois que la ligne active de l'objet Recordset lié est modifiée, tous les champs liés de l'objet Recordset sont copiés dans les variables C/C++. Si nécessaire, les données copiées sont converties dans le type de données déclaré de la variable C/C++.
La méthode BindToRecordset de l'interface IADORecordBinding lie les champs à des variables C/C++. La méthode AddNew ajoute une nouvelle ligne à l'objet Recordset lié. La méthode Update remplit des champs dans des nouvelles lignes de l'objet Recordset ou met à jour des champs de lignes existantes, avec la valeur des variables C/C++.
L'interface IADORecordBinding est implémentée par l'objet Recordset. Vous n'avez pas à coder l'implémentation vous-même.
Entrées de liaison
Les extensions Visual C++ pour ADO mappent les champs d’un objet Recordset à des variables C/C++. La définition du mappage entre un champ et une variable s’appelle entrée de liaison. Les macros fournissent des entrées de liaison pour les données numériques ainsi que les données de longueur fixe et variable. Les entrées de liaison et les variables C/C++ sont déclarées dans une classe dérivée de la classe des extensions Visual C++, CADORecordBinding. La classe CADORecordBinding est définie en interne par les macros des entrées de liaison.
En interne, ADO mappe les paramètres de ces macros à une structure DBBINDING OLE DB et crée un objet accesseur OLE DB permettant de gérer le mouvement et la conversion des données entre les champs et les variables. Pour OLE DB, les données se composent de trois parties : une mémoire tampon dans laquelle les données sont stockées, un état qui indique si un champ a été correctement stocké dans la mémoire tampon ou comment la variable doit être restaurée dans le champ et la longueur des données. Pour plus d'informations, consultez le manuel OLE DB Programmer's Reference, Chapter 6: Getting and Setting Data (en anglais).
Fichier d'en-tête
Incluez le fichier suivant dans votre application pour pouvoir utiliser les extensions Visual C++ pour ADO :
#include <icrsint.h>
Liaison des champs d'un objet Recordset
Pour lier les champs d'un objet Recordset à des variables C/C++
Créez une classe dérivée de la classe CADORecordBinding.
Spécifiez les entrées de liaison et les variables C/C++ correspondantes dans la classe dérivée. Placez les entrées de liaison entre des crochets, entre les macros BEGIN_ADO_BINDING et END_ADO_BINDING. Les macros ne doivent pas se terminer par des virgules ou des points-virgules. Les délimiteurs appropriés sont spécifiés automatiquement par chaque macro. Spécifiez une entrée de liaison pour chaque champ à mapper à une variable C/C++. Utilisez un membre approprié de la famille de macros ADO_FIXED_LENGTH_ENTRY, ADO_NUMERIC_ENTRY ou ADO_VARIABLE_LENGTH_ENTRY.
Dans votre application, créez un instance de la classe dérivée de CADORecordBinding. Obtenez l’interface IADORecordBinding à partir de l’objet Recordset. Appelez ensuite la méthode BindToRecordset pour lier les champs Recordset aux variables C/C++.
Pour plus d'informations, voir Exemple d'extensions Visual C++.
Méthodes d'interface
L'interface IADORecordBinding comporte trois méthodes : BindToRecordset, AddNew et Update. Le seul argument de chaque méthode est un pointeur vers une instance de la classe dérivée de CADORecordBinding. En conséquence, les méthodes AddNew et Update ne peuvent spécifier aucun des paramètres des méthodes ADO du même nom.
Syntaxe
La méthode BindToRecordset associe les champs d'un objet Recordset à des variables C/C++.
BindToRecordset(CADORecordBinding *binding)
La méthode AddNew appelle la méthode ADO éponyme, à savoir la méthode AddNew ADO, pour ajouter une nouvelle ligne à l'objet Recordset.
AddNew(CADORecordBinding *binding)
La méthode Update appelle la méthode ADO éponyme, à savoir la méthode Update ADO, pour mettre à jour l’objet Recordset.
Update(CADORecordBinding *binding)
Macros d'entrées de liaison
Les macros d'entrées de liaison définissent l'association entre un champ d'un objet Recordset et une variable. Des macros de début et de fin délimitent le jeu d'entrées de liaison.
Des familles de macros sont fournies pour les données de longueur fixe, telles que adDate ou adBoolean, les donnés numériques, telles que adTinyInt, adInteger ou adDouble et les données de longueur variable, telles que adChar, adVarChar ou adVarBinary. Tous les types numériques, à l'exception de adVarNumeric, sont également des données de longueur fixe. Chaque famille possède des jeux de paramètres différents, ce qui vous permet d'exclure des informations de liaison superflues.
Pour plus d'informations, consultez le manuel OLE DB Programmer's Reference, Appendix A: Data Types (en anglais).
Début des entrées de liaison
BEGIN_ADO_BINDING(Class)
Données de longueur fixe
ADO_FIXED_LENGTH_ENTRY(Ordinal, DataType, Buffer, Status, Modify)
ADO_FIXED_LENGTH_ENTRY2(Ordinal, DataType, Buffer, Modify)
Données numériques
ADO_NUMERIC_ENTRY(Ordinal, DataType, Buffer, Precision, Scale, Status, Modify)
ADO_NUMERIC_ENTRY2(Ordinal, DataType, Buffer, Precision, Scale, Modify)
Données de longueur variable
ADO_VARIABLE_LENGTH_ENTRY(Ordinal, DataType, Buffer, Size, Status, Length, Modify)
ADO_VARIABLE_LENGTH_ENTRY2(Ordinal, DataType, Buffer, Size, Status, Modify)
ADO_VARIABLE_LENGTH_ENTRY3(Ordinal, DataType, Buffer, Size, Length, Modify)
ADO_VARIABLE_LENGTH_ENTRY4(Ordinal, DataType, Buffer, Size, Modify)
Fin des entrées de liaison
END_ADO_BINDING()
Paramètre |
Description |
---|---|
Classe |
Classe dans laquelle sont définies les entrées de liaison et les variables C/C++. |
Ordinal |
Nombre ordinal, à partir de un, du champ de l'objet Recordset correspondant à la variable C/C++. |
DataType |
Type de données ADO équivalent de la variable C/C++ (les types de données valides sont répertoriés à la rubrique DataTypeEnum). La valeur du champ de l’objet Recordset sera convertie dans ce type de données, si nécessaire. |
Buffer |
Nom de la variable C/C++ dans laquelle le champ de l'objet Recordset va être stocké. |
Size |
Taille maximale, en octets, du paramètre Mémoire tampon. Si le paramètre Mémoire tampon contient une chaîne de longueur variable, prévoyez de l'espace pour un zéro de fin. |
État |
Nom d'une variable qui indique si le contenu du paramètre Mémoire tampon est valide et si la conversion du champ en Type de données s'est correctement déroulée. Les deux valeurs les plus importantes de cette variable sont adFldOK, qui indique que la conversion s'est correctement déroulée, et adFldNull, qui indique que la valeur du champ est un VARIANT de type VT_NULL et que ce champ n'est pas simplement vide. Les valeurs possibles du paramètre État sont répertoriées dans le tableau suivant « Valeurs du paramètre État ». |
Modify |
Indicateur booléen. S'il a la valeur TRUE, il indique qu'ADO est autorisé à mettre à jour l'objet Recordset correspondant avec la valeur contenue dans le paramètre Mémoire tampon. Affectez la valeur TRUE au paramètre modifier booléen pour permettre à ADO de mettre à jour le champ lié et la valeur FALSE si vous voulez examiner le champ sans le modifier. |
Précision |
Nombre de chiffres pouvant être représenté dans une variable numérique. |
Scale |
Nombre de décimales dans une variable numérique. |
Length |
Nom d'une variable à quatre octets qui doit contenir la longueur réelle des données dans Mémoire tampon. |
Valeurs du paramètre État
La valeur de la variable État indique si un champ a été correctement copié dans une variable.
Lorsque vous définissez les données, vous pouvez affecter à État la valeur adFldNull pour indiquer que le champ de l'objet Recordset doit avoir une valeur null.
Constante |
Valeur |
Description |
---|---|---|
adFldOK |
0 |
Une valeur de champ non null a été retournée. |
adFldBadAccessor |
1 |
Liaison non valide. |
adFldCantConvertValue |
2 |
La valeur n'a pas pu être convertie pour une raison autre qu'une non correspondance de signes ou un dépassement de capacité. |
adFldNull |
3 |
Lors de l'obtention d'un champ, indique qu'une valeur null a été retournée. Lors de la définition d'un champ, indique que le champ doit être affecté de la valeur NULL lorsqu'il ne peut pas coder lui-même la valeur NULL (par exemple, un tableau de caractères ou un nombre entier). |
adFldTruncated |
4 |
Des données de longueur variable ou des chiffres ont été tronqués. |
adFldSignMismatch |
5 |
La valeur est signée et le type de données de la variable ne l'est pas. |
adFldDataOverFlow |
6 |
La valeur est supérieure à la capacité de stockage du type de données de la variable. |
adFldCantCreate |
7 |
Type de colonne inconnu et champ déjà ouvert. |
adFldUnavailable |
8 |
La valeur du champ n'a pas pu être déterminée, par exemple, sur un nouveau champ non assigné et ne comportant aucune valeur par défaut. |
adFldPermissionDenied |
9 |
Lors d'une mise à jour, absence d'autorisation d'écriture des données. |
adFldIntegrityViolation |
10 |
Lors d'une mise à jour, la valeur du champ enfreint l'intégrité de la colonne. |
adFldSchemaViolation |
11 |
Lors d'une mise à jour, la valeur du champ ne respecte pas le schéma de colonne. |
adFldBadStatus |
12 |
Lors d'une mise à jour, paramètre d'état incorrect. |
adFldDefault |
13 |
Lors d'une mise à jour, une valeur par défaut a été utilisée. |