Fonctions Record Field Exchange (RFX)
Cette rubrique répertorie les fonctions d’échange de champs d’enregistrements (RFX, RFX en blocet DFX) permettant d’automatiser le transfert de données entre un objet recordset et sa source de données et d’effectuer d’autres opérations sur les données.
Si vous utilisez les classes ODBC et que vous avez implémenté l’extraction de lignes en bloc, vous devez remplacer manuellement la fonction membre DoBulkFieldExchange
de CRecordset
en appelant les fonctions RFX en bloc pour chaque membre de données correspondant à une colonne de source de données.
Si vous n’avez pas implémenté la récupération de lignes en bloc dans les classes ODBC, ou si vous utilisez les classes DAO (obsolètes), ClassWizard remplace la DoFieldExchange
fonction membre de CRecordset
ou CDaoRecordset
en appelant les fonctions RFX (pour les classes ODBC) ou les fonctions DFX (pour les classes DAO) pour chaque membre de données de champ dans votre jeu d’enregistrements.
Les fonctions d’échange de champs d’enregistrements transfèrent des données chaque fois que l’infrastructure appelle DoFieldExchange
ou DoBulkFieldExchange
. Chaque fonction transfère un type de données spécifique.
Pour plus d’informations sur l’utilisation de ces fonctions, consultez les articles Record Field Exchange : fonctionnement de RFX (ODBC). Pour plus d’informations sur l’extraction de lignes en bloc, consultez l’article Recordset : extraction globale d’enregistrements en bloc (ODBC).
Pour les colonnes de données que vous liez dynamiquement, vous pouvez aussi appeler les fonctions RFX et DFX par vous-même, comme expliqué dans les articles Recordset : liaison dynamique des colonnes de données (ODBC). Par ailleurs, vous pouvez écrire vos propres routines RFX ou DFX personnalisées, comme l’explique la Note technique 43 (pour ODBC) et la Note technique 53 (pour DAO).
Pour obtenir un exemple de fonctions RFX et RFX en bloc telles qu’elles apparaissent dans les DoFieldExchange
fonctions et DoBulkFieldExchange
les fonctions, consultez RFX_Text et [RFX_Text_Bulk]#rfx_text_bulk). Les fonctions DFX sont très similaires aux fonctions RFX.
Fonctions RFX (ODBC)
Nom | Description |
---|---|
RFX_Binary | Transfère les tableaux d’octets de type CByteArray. |
RFX_Bool | Transfère les données de type Boolean. |
RFX_Byte | Transfère un seul octet de données. |
RFX_Date | Transfère les données d’heure et de date à l’aide de CTime ou de TIMESTAMP_STRUCT. |
RFX_Double | Transfère les données de type Float double précision. |
RFX_Int | Transfère les données de type Integer. |
RFX_Long | Transfère les données de type Long Integer. |
RFX_LongBinary | Transfère les données BLOB avec un objet de la classe CLongBinary . |
RFX_Single | Transfère les données de type Float. |
RFX_Text | Transfère les données de type String. |
Fonctions RFX en bloc (ODBC)
Nom | Description |
---|---|
RFX_Binary_Bulk | Transfère les tableaux de données de type Byte. |
RFX_Bool_Bulk | Transfère les tableaux de données de type Boolean. |
RFX_Byte_Bulk | Transfère les tableaux d’octets uniques. |
RFX_Date_Bulk | Transfère les tableaux de données de type TIMESTAMP_STRUCT. |
RFX_Double_Bulk | Transfère les tableaux de données à virgule flottante double précision. |
RFX_Int_Bulk | Transfère les tableaux de données de type Integer. |
RFX_Long_Bulk | Transfère les tableaux de données de type Long Integer. |
RFX_Single_Bulk | Transfère les tableaux de données à virgule flottante. |
RFX_Text_Bulk | Transfère les tableaux de données de type LPSTR. |
Fonctions DFX (DAO)
Nom | Description |
---|---|
DFX_Binary | Transfère les tableaux d’octets de type CByteArray. |
DFX_Bool | Transfère les données de type Boolean. |
DFX_Byte | Transfère un seul octet de données. |
DFX_Currency | Transfère les données de devise de type COleCurrency. |
DFX_DateTime | Transfère les données de date et d’heure de type COleDateTime. |
DFX_Double | Transfère les données de type Float double précision. |
DFX_Long | Transfère les données de type Long Integer. |
DFX_LongBinary | Transfère les données BLOB avec un objet de la classe CLongBinary . Pour DAO, il est recommandé d’utiliser plutôt DFX_Binary . |
DFX_Short | Transfère les données de type Short Integer. |
DFX_Single | Transfère les données de type Float. |
DFX_Text | Transfère les données de type String. |
=============================================
RFX_Binary
Transfère des tableaux d’octets entre les membres de données de champ d’un CRecordset
objet et les colonnes d’un enregistrement sur la source de données de type ODBC SQL_BINARY, SQL_VARBINARY ou SQL_LONGVARBINARY.
Syntaxe
void RFX_Binary(
CFieldExchange* pFX,
const char* szName,
CByteArray& value,
int nMaxLength = 255);
Paramètres
Pfx
Pointeur vers un objet de la classe CFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations sur les opérations qu’un CFieldExchange
objet peut spécifier, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type CByteArray, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
nMaxLength
Longueur maximale autorisée de la chaîne ou du tableau en cours de transfert. La valeur par défaut de nMaxLength est 255. Les valeurs légales sont de 1 à INT_MAX. L’infrastructure alloue cette quantité d’espace pour les données. Pour de meilleures performances, transmettez une valeur suffisamment grande pour prendre en charge le plus grand élément de données attendu.
Notes
Les données de la source de données de ces types sont mappées vers et à partir du type CByteArray
dans le jeu d’enregistrements.
Exemple
Voir RFX_Text.
Spécifications
En-tête : afxdb.h
RFX_Bool
Transfère les données booléennes entre les membres de données de champ d’un CRecordset
objet et les colonnes d’un enregistrement sur la source de données de type ODBC SQL_BIT.
Syntaxe
void RFX_Bool(
CFieldExchange* pFX,
const char* szName,
BOOL& value);
Paramètres
Pfx
Pointeur vers un objet de la classe CFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations sur les opérations qu’un CFieldExchange
objet peut spécifier, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type BOOL, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
Exemple
Voir RFX_Text.
Spécifications
En-tête : afxdb.h
RFX_Byte
Transfère des octets uniques entre les membres de données de champ d’un CRecordset
objet et les colonnes d’un enregistrement sur la source de données de type ODBC SQL_TINYINT.
Syntaxe
void RFX_Byte(
CFieldExchange* pFX,
const char* szName,
BYTE& value);
Paramètres
Pfx
Pointeur vers un objet de la classe CFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations sur les opérations qu’un CFieldExchange
objet peut spécifier, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type BYTE, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
Exemple
Voir RFX_Text.
Spécifications
En-tête : afxdb.h
RFX_Date
Transfère CTime
ou TIMESTAMP_STRUCT données entre les membres de données de champ d’un CRecordset
objet et les colonnes d’un enregistrement sur la source de données de type ODBC SQL_DATE, SQL_TIME ou SQL_TIMESTAMP.
Syntaxe
void RFX_Date(
CFieldExchange* pFX,
const char* szName,
CTime& value);
void RFX_Date(
CFieldExchange* pFX,
const char* szName,
TIMESTAMP_STRUCT& value);
void RFX_Date(
CFieldExchange* pFX,
const char* szName,
COleDateTime& value);
Paramètres
Pfx
Pointeur vers un objet de la classe CFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations sur les opérations qu’un CFieldExchange
objet peut spécifier, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué ; valeur à transférer. Les différentes versions de la fonction prennent différents types de données pour valeur :
La première version de la fonction prend une référence à un objet CTime . Pour un transfert d’un jeu d’enregistrements vers la source de données, cette valeur est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
La deuxième version de la fonction prend une référence à une TIMESTAMP_STRUCT
structure. Vous devez configurer cette structure vous-même avant l’appel. Aucune prise en charge de l’échange de données de boîte de dialogue (DDX) ni la prise en charge de l’Assistant Code n’est disponible pour cette version. La troisième version de la fonction fonctionne de la même façon que la première version, sauf qu’elle prend une référence à un objet COleDateTime .
Notes
La CTime
version de la fonction impose la surcharge de certains traitements intermédiaires et a une plage un peu limitée. Si vous trouvez l’un de ces facteurs trop limitant, utilisez la deuxième version de la fonction. Notez toutefois son absence d’Assistant de code et la prise en charge de DDX et la nécessité de configurer la structure vous-même.
Exemple
Voir RFX_Text.
Spécifications
En-tête : afxdb.h
RFX_Double
Transfère les données flottantes doubles entre les membres de données de champ d’un CRecordset
objet et les colonnes d’un enregistrement sur la source de données du type ODBC SQL_DOUBLE.
Syntaxe
void RFX_Double(
CFieldExchange* pFX,
const char* szName,
double& value);
Paramètres
Pfx
Pointeur vers un objet de la classe CFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations sur les opérations qu’un CFieldExchange
objet peut spécifier, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type double
, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
Exemple
Voir RFX_Text.
Spécifications
En-tête : afxdb.h
RFX_Int
Transfère les données entières entre les membres de données de champ d’un CRecordset
objet et les colonnes d’un enregistrement sur la source de données du type ODBC SQL_SMALLINT.
Syntaxe
void RFX_Int(
CFieldExchange* pFX,
const char* szName,
int& value);
Paramètres
Pfx
Pointeur vers un objet de la classe CFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations sur les opérations qu’un CFieldExchange
objet peut spécifier, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type int
, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
Exemple
Voir RFX_Text.
Spécifications
En-tête : afxdb.h
RFX_Long
Transfère les données entières longues entre les membres de données de champ d’un CRecordset
objet et les colonnes d’un enregistrement sur la source de données du type ODBC SQL_INTEGER.
Syntaxe
void RFX_Long(
CFieldExchange* pFX,
const char* szName,
LONG&
value );
Paramètres
Pfx
Pointeur vers un objet de la classe CFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations sur les opérations qu’un CFieldExchange
objet peut spécifier, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type long
, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
Exemple
Voir RFX_Text.
Spécifications
En-tête : afxdb.h
RFX_LongBinary
Transfère les données blob (binary large object) à l’aide de la classe CLongBinary entre les membres de données de champ d’un CRecordset
objet et les colonnes d’un enregistrement sur la source de données de type ODBC SQL_LONGVARBINARY ou SQL_LONGVARCHAR.
Syntaxe
void RFX_LongBinary(
CFieldExchange* pFX,
const char* szName,
CLongBinary& value);
Paramètres
Pfx
Pointeur vers un objet de la classe CFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations sur les opérations qu’un CFieldExchange
objet peut spécifier, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type CLongBinary
, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
Exemple
Voir RFX_Text.
Spécifications
En-tête : afxdb.h
RFX_Single
Transfère les données à virgule flottante entre les membres de données de champ d’un CRecordset
objet et les colonnes d’un enregistrement sur la source de données de type ODBC SQL_REAL.
Syntaxe
void RFX_Single(
CFieldExchange* pFX,
const char* szName,
float& value);
Paramètres
Pfx
Pointeur vers un objet de la classe CFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations sur les opérations qu’un CFieldExchange
objet peut spécifier, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type float
, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
Exemple
Voir RFX_Text.
Spécifications
En-tête : afxdb.h
RFX_Text
Transfère les CString
données entre les membres de données de champ d’un CRecordset
objet et des colonnes d’un enregistrement sur la source de données de type ODBC SQL_LONGVARCHAR, SQL_CHAR, SQL_VARCHAR, SQL_DECIMAL ou SQL_NUMERIC.
Syntaxe
void RFX_Text(
CFieldExchange* pFX,
const char* szName,
CString& value,
int nMaxLength = 255,
int nColumnType = SQL_VARCHAR,
short nScale = 0);
Paramètres
Pfx
Pointeur vers un objet de classe CFieldExchange
. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations sur les opérations qu’un CFieldExchange
objet peut spécifier, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type CString
, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
nMaxLength
Longueur maximale autorisée de la chaîne ou du tableau en cours de transfert. La valeur par défaut de nMaxLength est 255. Les valeurs légales sont comprises entre 1 et INT_MAX). L’infrastructure alloue cette quantité d’espace pour les données. Pour de meilleures performances, transmettez une valeur suffisamment grande pour prendre en charge le plus grand élément de données attendu.
nColumnType
Utilisé principalement pour les paramètres. Entier indiquant le type de données du paramètre. Le type est un type de données ODBC du formulaire SQL_XXX.
nScale
Spécifie l’échelle pour les valeurs de type ODBC SQL_DECIMAL ou SQL_NUMERIC. nScale n’est utile que lorsque vous définissez des valeurs de paramètre. Pour plus d’informations, consultez la rubrique « Précision, échelle, longueur et taille d’affichage » dans l’annexe D de la référence du programmeur du SDK ODBC.
Notes
Les données de la source de données de tous ces types sont mappées vers et depuis CString
le jeu d’enregistrements.
Exemple
Cet exemple montre plusieurs appels à RFX_Text
. Notez également les deux appels à CFieldExchange::SetFieldType
. Pour les paramètres, vous devez écrire l’appel et SetFieldType
son appel RFX. L’appel de colonne de sortie et ses appels RFX associés sont normalement écrits par un Assistant code.
void CCustomer::DoFieldExchange(CFieldExchange* pFX)
{
pFX->SetFieldType(CFieldExchange::outputColumn);
// Macros such as RFX_Text() and RFX_Int() are dependent on the
// type of the member variable, not the type of the field in the database.
// ODBC will try to automatically convert the column value to the requested type
RFX_Long(pFX, _T("[CustomerID]"), m_CustomerID);
RFX_Text(pFX, _T("[ContactFirstName]"), m_ContactFirstName);
RFX_Text(pFX, _T("[PostalCode]"), m_PostalCode);
RFX_Text(pFX, _T("[L_Name]"), m_L_Name);
RFX_Long(pFX, _T("[BillingID]"), m_BillingID);
pFX->SetFieldType(CFieldExchange::inputParam);
RFX_Text(pFX, _T("Param"), m_strParam);
}
Spécifications
En-tête : afxdb.h
RFX_Binary_Bulk
Transfère plusieurs lignes de données d’octets d’une colonne d’une source de données ODBC vers un tableau correspondant dans un CRecordset
objet dérivé.
Syntaxe
void RFX_Binary_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BYTE** prgByteVals,
long** prgLengths,
int nMaxLength);
Paramètres
Pfx
Pointeur vers un objet CFieldExchange . Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
prgByteVals
Pointeur vers un tableau de valeurs BYTE. Ce tableau stocke les données à transférer de la source de données vers le jeu d’enregistrements.
prgLengths
Pointeur vers un tableau d’entiers longs. Ce tableau stocke la longueur en octets de chaque valeur du tableau pointé par prgByteVals. Notez que la valeur SQL_NULL_DATA sera stockée si l’élément de données correspondant contient une valeur Null. Pour plus d’informations, consultez la fonction SQLBindCol
API ODBC dans la référence du programmeur du SDK ODBC.
nMaxLength
Longueur maximale autorisée des valeurs stockées dans le tableau pointé par prgByteVals. Pour vous assurer que les données ne seront pas tronquées, transmettez une valeur suffisamment grande pour prendre en charge le plus grand élément de données attendu.
Notes
La colonne de source de données peut avoir un type ODBC de SQL_BINARY, de SQL_VARBINARY ou de SQL_LONGVARBINARY. Le jeu d’enregistrements doit définir un membre de données de champ de pointeur de type vers BYTE.
Si vous initialisez prgByteVals et prgLengths sur NULL, les tableaux auxquels ils pointent seront alloués automatiquement, avec des tailles égales à la taille de l’ensemble de lignes.
Remarque
L’échange de champs d’enregistrement en bloc transfère uniquement les données de la source de données à l’objet recordset. Pour rendre votre jeu d’enregistrements pouvant être mis à jour, vous devez utiliser la fonction SQLSetPos
API ODBC .
Pour plus d’informations, consultez les articles Recordset : Fetching Records in Bulk (ODBC) and Record Field Exchange (RFX).
Exemple
Voir RFX_Text_Bulk.
Spécifications
En-tête : afxdb.h
RFX_Bool_Bulk
Transfère plusieurs lignes de données booléennes d’une colonne d’une source de données ODBC vers un tableau correspondant dans un CRecordset
objet dérivé.
Syntaxe
void RFX_Bool_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BOOL** prgBoolVals,
long** prgLengths);
Paramètres
Pfx
Pointeur vers un objet CFieldExchange . Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
prgBoolVals
Pointeur vers un tableau de valeurs BOOL. Ce tableau stocke les données à transférer de la source de données vers le jeu d’enregistrements.
prgLengths
Pointeur vers un tableau d’entiers longs. Ce tableau stocke la longueur en octets de chaque valeur du tableau pointé par prgBoolVals. Notez que la valeur SQL_NULL_DATA sera stockée si l’élément de données correspondant contient une valeur Null. Pour plus d’informations, consultez la fonction SQLBindCol
API ODBC dans la référence du programmeur du SDK ODBC.
Notes
La colonne de source de données doit avoir un type ODBC de SQL_BIT. Le jeu d’enregistrements doit définir un membre de données de champ de pointeur de type vers BOOL.
Si vous initialisez prgBoolVals et prgLengths sur NULL, les tableaux auxquels ils pointent seront alloués automatiquement, avec des tailles égales à la taille de l’ensemble de lignes.
Remarque
L’échange de champs d’enregistrement en bloc transfère uniquement les données de la source de données à l’objet recordset. Pour rendre votre jeu d’enregistrements pouvant être mis à jour, vous devez utiliser la fonction SQLSetPos
API ODBC .
Pour plus d’informations, consultez les articles Recordset : Fetching Records in Bulk (ODBC) and Record Field Exchange (RFX).
Exemple
Voir RFX_Text_Bulk.
Spécifications
En-tête : afxdb.h
RFX_Byte_Bulk
Transfère plusieurs lignes d’octets uniques d’une colonne d’une source de données ODBC vers un tableau correspondant dans un CRecordset
objet dérivé.
Syntaxe
void RFX_Byte_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BYTE** prgByteVals,
long** prgLengths);
Paramètres
Pfx
Pointeur vers un objet CFieldExchange . Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
prgByteVals
Pointeur vers un tableau de valeurs BYTE. Ce tableau stocke les données à transférer de la source de données vers le jeu d’enregistrements.
prgLengths
Pointeur vers un tableau d’entiers longs. Ce tableau stocke la longueur en octets de chaque valeur du tableau pointé par prgByteVals. Notez que la valeur SQL_NULL_DATA sera stockée si l’élément de données correspondant contient une valeur Null. Pour plus d’informations, consultez la fonction SQLBindCol
API ODBC dans la référence du programmeur du SDK ODBC.
Notes
La colonne de source de données doit avoir un type ODBC de SQL_TINYINT. Le jeu d’enregistrements doit définir un membre de données de champ de pointeur de type vers BYTE.
Si vous initialisez prgByteVals et prgLengths sur NULL, les tableaux auxquels ils pointent seront alloués automatiquement, avec des tailles égales à la taille de l’ensemble de lignes.
Remarque
L’échange de champs d’enregistrement en bloc transfère uniquement les données de la source de données à l’objet recordset. Pour rendre votre jeu d’enregistrements pouvant être mis à jour, vous devez utiliser la fonction SQLSetPos
API ODBC .
Pour plus d’informations, consultez les articles Recordset : Fetching Records in Bulk (ODBC) and Record Field Exchange (RFX).
Exemple
Voir RFX_Text_Bulk.
Spécifications
En-tête : afxdb.h
RFX_Date_Bulk
Transfère plusieurs lignes de TIMESTAMP_STRUCT données d’une colonne d’une source de données ODBC vers un tableau correspondant dans un CRecordset
objet dérivé.
Syntaxe
void RFX_Date_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
TIMESTAMP_STRUCT** prgTSVals,
long** prgLengths);
Paramètres
Pfx
Pointeur vers un objet CFieldExchange . Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
prgTSVals
Pointeur vers un tableau de valeurs TIMESTAMP_STRUCT. Ce tableau stocke les données à transférer de la source de données vers le jeu d’enregistrements. Pour plus d’informations sur le type de données TIMESTAMP_STRUCT, consultez la rubrique « Types de données C » dans l’annexe D de la référence du programmeur du SDK ODBC.
prgLengths
Pointeur vers un tableau d’entiers longs. Ce tableau stocke la longueur en octets de chaque valeur du tableau pointé par prgTSVals. Notez que la valeur SQL_NULL_DATA sera stockée si l’élément de données correspondant contient une valeur Null. Pour plus d’informations, consultez la fonction SQLBindCol
API ODBC dans la référence du programmeur du SDK ODBC.
Notes
La colonne de source de données peut avoir un type ODBC de SQL_DATE, de SQL_TIME ou de SQL_TIMESTAMP. Le jeu d’enregistrements doit définir un membre de données de champ de type pointeur vers TIMESTAMP_STRUCT.
Si vous initialisez prgTSVals et prgLengths sur NULL, les tableaux auxquels ils pointent seront alloués automatiquement, avec des tailles égales à la taille de l’ensemble de lignes.
Remarque
L’échange de champs d’enregistrement en bloc transfère uniquement les données de la source de données à l’objet recordset. Pour rendre votre jeu d’enregistrements pouvant être mis à jour, vous devez utiliser la fonction SQLSetPos
API ODBC .
Pour plus d’informations, consultez les articles Recordset : Fetching Records in Bulk (ODBC) and Record Field Exchange (RFX).
Exemple
Voir RFX_Text_Bulk.
Spécifications
En-tête : afxdb.h
RFX_Double_Bulk
Transfère plusieurs lignes de données à virgule flottante double précision à partir d’une colonne d’une source de données ODBC vers un tableau correspondant dans un CRecordset
objet dérivé.
Syntaxe
void RFX_Double_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
double** prgDblVals,
long** prgLengths);
Paramètres
Pfx
Pointeur vers un objet CFieldExchange . Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
prgDblVals
Pointeur vers un tableau de double
valeurs. Ce tableau stocke les données à transférer de la source de données vers le jeu d’enregistrements.
prgLengths
Pointeur vers un tableau d’entiers longs. Ce tableau stocke la longueur en octets de chaque valeur du tableau pointé par prgDblVals. Notez que la valeur SQL_NULL_DATA sera stockée si l’élément de données correspondant contient une valeur Null. Pour plus d’informations, consultez la fonction SQLBindCol
API ODBC dans la référence du programmeur du SDK ODBC.
Notes
La colonne de source de données doit avoir un type ODBC de SQL_DOUBLE. Le jeu d’enregistrements doit définir un membre de données de champ de type pointeur vers double
.
Si vous initialisez prgDblVals et prgLengths sur NULL, les tableaux auxquels ils pointent seront alloués automatiquement, avec des tailles égales à la taille de l’ensemble de lignes.
Remarque
L’échange de champs d’enregistrement en bloc transfère uniquement les données de la source de données à l’objet recordset. Pour rendre votre jeu d’enregistrements pouvant être mis à jour, vous devez utiliser la fonction SQLSetPos
API ODBC .
Pour plus d’informations, consultez les articles Recordset : Fetching Records in Bulk (ODBC) and Record Field Exchange (RFX).
Exemple
Voir RFX_Text_Bulk.
Spécifications
En-tête : afxdb.h
RFX_Int_Bulk
Transfère les données entières entre les membres de données de champ d’un CRecordset
objet et les colonnes d’un enregistrement sur la source de données du type ODBC SQL_SMALLINT.
Syntaxe
void RFX_Int(
CFieldExchange* pFX,
const char* szName,
int& value);
Paramètres
Pfx
Pointeur vers un objet de la classe CFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations sur les opérations qu’un CFieldExchange
objet peut spécifier, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type int
, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
Exemple
Voir RFX_Text.
Spécifications
En-tête : afxdb.h
RFX_Long_Bulk
Transfère plusieurs lignes de données entières longues d’une colonne d’une source de données ODBC vers un tableau correspondant dans un CRecordset
objet dérivé.
Syntaxe
void RFX_Long_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
long** prgLongVals,
long** prgLengths);
Paramètres
Pfx
Pointeur vers un objet CFieldExchange . Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
prgLongVals
Pointeur vers un tableau d’entiers longs. Ce tableau stocke les données à transférer de la source de données vers le jeu d’enregistrements.
prgLengths
Pointeur vers un tableau d’entiers longs. Ce tableau stocke la longueur en octets de chaque valeur du tableau pointé par prgLongVals. Notez que la valeur SQL_NULL_DATA sera stockée si l’élément de données correspondant contient une valeur Null. Pour plus d’informations, consultez la fonction SQLBindCol
API ODBC dans la référence du programmeur du SDK ODBC.
Notes
La colonne de source de données doit avoir un type ODBC de SQL_INTEGER. Le jeu d’enregistrements doit définir un membre de données de champ de type pointeur vers long
.
Si vous initialisez prgLongVals et prgLengths sur NULL, les tableaux auxquels ils pointent seront alloués automatiquement, avec des tailles égales à la taille de l’ensemble de lignes.
Remarque
L’échange de champs d’enregistrement en bloc transfère uniquement les données de la source de données à l’objet recordset. Pour rendre votre jeu d’enregistrements pouvant être mis à jour, vous devez utiliser la fonction SQLSetPos
API ODBC .
Pour plus d’informations, consultez les articles Recordset : Fetching Records in Bulk (ODBC) and Record Field Exchange (RFX).
Exemple
Voir RFX_Text_Bulk.
Spécifications
En-tête : afxdb.h
RFX_Single_Bulk
Transfère plusieurs lignes de données à virgule flottante d’une colonne d’une source de données ODBC vers un tableau correspondant dans un CRecordset
objet dérivé.
Syntaxe
void RFX_Single_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
float** prgFltVals,
long** prgLengths);
Paramètres
Pfx
Pointeur vers un objet CFieldExchange . Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
prgFltVals
Pointeur vers un tableau de float
valeurs. Ce tableau stocke les données à transférer de la source de données vers le jeu d’enregistrements.
prgLengths
Pointeur vers un tableau d’entiers longs. Ce tableau stocke la longueur en octets de chaque valeur du tableau pointé par prgFltVals. Notez que la valeur SQL_NULL_DATA sera stockée si l’élément de données correspondant contient une valeur Null. Pour plus d’informations, consultez la fonction SQLBindCol
API ODBC dans la référence du programmeur du SDK ODBC.
Notes
La colonne de source de données doit avoir un type ODBC de SQL_REAL. Le jeu d’enregistrements doit définir un membre de données de champ de type pointeur vers float
.
Si vous initialisez prgFltVals et prgLengths sur NULL, les tableaux auxquels ils pointent seront alloués automatiquement, avec des tailles égales à la taille de l’ensemble de lignes.
Remarque
L’échange de champs d’enregistrement en bloc transfère uniquement les données de la source de données à l’objet recordset. Pour rendre votre jeu d’enregistrements pouvant être mis à jour, vous devez utiliser la fonction SQLSetPos
API ODBC .
Pour plus d’informations, consultez les articles Recordset : Fetching Records in Bulk (ODBC) and Record Field Exchange (RFX).
Exemple
Voir RFX_Text_Bulk.
Spécifications
En-tête : afxdb.h
RFX_Text_Bulk
Transfère plusieurs lignes de données de caractères d’une colonne d’une source de données ODBC vers un tableau correspondant dans un CRecordset
objet dérivé.
Syntaxe
void RFX_Text_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
LPSTR* prgStrVals,
long** prgLengths,
int nMaxLength);
Paramètres
Pfx
Pointeur vers un objet CFieldExchange . Cet objet contient des informations pour définir le contexte de chaque appel de la fonction. Pour plus d’informations, consultez l’article Record Field Exchange : How RFX Works.
szName
Nom d’une colonne de données.
prgStrVals
Pointeur vers un tableau de valeurs LPSTR. Ce tableau stocke les données à transférer de la source de données vers le jeu d’enregistrements. Notez qu’avec la version actuelle d’ODBC, ces valeurs ne peuvent pas être Unicode.
prgLengths
Pointeur vers un tableau d’entiers longs. Ce tableau stocke la longueur en octets de chaque valeur du tableau pointé par prgStrVals. Cette longueur exclut le caractère d’arrêt Null. Notez que la valeur SQL_NULL_DATA sera stockée si l’élément de données correspondant contient une valeur Null. Pour plus d’informations, consultez la fonction SQLBindCol
API ODBC dans la référence du programmeur du SDK ODBC.
nMaxLength
Longueur maximale autorisée des valeurs stockées dans le tableau pointé par prgStrVals, y compris le caractère de terminaison Null. Pour vous assurer que les données ne seront pas tronquées, transmettez une valeur suffisamment grande pour prendre en charge le plus grand élément de données attendu.
Notes
La colonne de source de données peut avoir un type ODBC de SQL_LONGVARCHAR, de SQL_CHAR, de SQL_VARCHAR, de SQL_DECIMAL ou de SQL_NUMERIC. Le jeu d’enregistrements doit définir un membre de données de champ de type LPSTR.
Si vous initialisez prgStrVals et prgLengths sur NULL, les tableaux auxquels ils pointent seront alloués automatiquement, avec des tailles égales à la taille de l’ensemble de lignes.
Remarque
L’échange de champs d’enregistrement en bloc transfère uniquement les données de la source de données à l’objet recordset. Pour rendre votre jeu d’enregistrements pouvant être mis à jour, vous devez utiliser la fonction SQLSetPos
API ODBC .
Pour plus d’informations, consultez les articles Recordset : Fetching Records in Bulk (ODBC) and Record Field Exchange (RFX).
Exemple
Vous devez écrire manuellement des appels dans votre DoBulkFieldExchange
remplacement. Cet exemple montre un appel à RFX_Text_Bulk
, ainsi qu’un appel à RFX_Long_Bulk
, pour le transfert de données. Ces appels sont précédés d’un appel à CFieldExchange ::SetFieldType. Notez que pour les paramètres, vous devez appeler les fonctions RFX au lieu des fonctions RFX en bloc.
void CMultiCustomer::DoBulkFieldExchange(CFieldExchange* pFX)
{
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Long_Bulk(pFX, _T("[CustomerID]"), &m_pCustomerID, &m_pcCustomerID);
RFX_Text_Bulk(pFX, _T("[ContactFirstName]"), &m_pContactFirstName, &m_pcContactFirstName, 50);
RFX_Text_Bulk(pFX, _T("[PostalCode]"), &m_pPostalCode, &m_pcPostalCode, 50);
RFX_Text_Bulk(pFX, _T("[L_Name]"), &m_pL_Name, &m_pcL_Name, 50);
RFX_Long_Bulk(pFX, _T("[BillingID]"), &m_pBillingID, &m_pcBillingID);
pFX->SetFieldType(CFieldExchange::inputParam);
RFX_Text(pFX, _T("Param"), m_strParam);
}
Spécifications
En-tête : afxdb.h
DFX_Binary
Transfère des tableaux d’octets entre les membres de données de champ d’un objet CDaoRecordset et les colonnes d’un enregistrement sur la source de données.
Syntaxe
void AFXAPI DFX_Binary(
CDaoFieldExchange* pFX,
LPCTSTR szName,
CByteArray& value,
int nPreAllocSize = AFX_DAO_BINARY_DEFAULT_SIZE,
DWORD dwBindOptions = 0);
Paramètres
Pfx
Pointeur vers un objet de la classe CDaoFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type CByteArray, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
nPreAllocSize
L’infrastructure préalloue cette quantité de mémoire. Si vos données sont plus volumineuses, l’infrastructure allouera plus d’espace si nécessaire. Pour de meilleures performances, définissez cette taille sur une valeur suffisamment grande pour empêcher les réaffectations. La taille par défaut est définie dans l’AFXDAO. Fichier H en tant que AFX_DAO_BINARY_DEFAULT_SIZE.
dwBindOptions
Option qui vous permet de tirer parti du mécanisme de mise en mémoire tampon double de MFC pour détecter les champs de jeu d’enregistrements qui ont changé. La valeur par défaut, AFX_DAO_DISABLE_FIELD_CACHE, n’utilise pas la mise en mémoire tampon double, et vous devez appeler SetFieldDirty et SetFieldNull vous-même. L’autre valeur possible, AFX_DAO_ENABLE_FIELD_CACHE, utilise la mise en mémoire tampon double et vous n’avez pas à effectuer de travail supplémentaire pour marquer les champs sales ou Null. Pour des raisons de performances et de mémoire, évitez cette valeur, sauf si vos données binaires sont relativement petites.
Remarque
Vous pouvez contrôler si les données sont doublement mises en mémoire tampon pour tous les champs par défaut en définissant CDaoRecordset ::m_bCheckCacheForDirtyFields.
Notes
Les données sont mappées entre le type DAO_BYTES dans DAO et le type CByteArray dans le jeu d’enregistrements.
Exemple
Voir DFX_Text.
Spécifications
En-tête : afxdao.h
DFX_Bool
Transfère les données booléennes entre les membres de données de champ d’un objet CDaoRecordset et les colonnes d’un enregistrement sur la source de données.
Syntaxe
void AFXAPI DFX_Bool(
CDaoFieldExchange* pFX,
LPCTSTR szName,
BOOL& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Paramètres
Pfx
Pointeur vers un objet de la classe CDaoFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type BOOL, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
dwBindOptions
Option qui vous permet de tirer parti du mécanisme de mise en mémoire tampon double de MFC pour détecter les champs de jeu d’enregistrements qui ont changé. La valeur par défaut, AFX_DAO_ENABLE_FIELD_CACHE, utilise la mise en mémoire tampon double. L’autre valeur possible est AFX_DAO_DISABLE_FIELD_CACHE. Si vous spécifiez cette valeur, MFC ne vérifie pas ce champ. Vous devez appeler SetFieldDirty
et SetFieldNull
vous-même.
Remarque
Vous pouvez contrôler si les données sont double mises en mémoire tampon par défaut en définissant CDaoRecordset ::m_bCheckCacheForDirtyFields.
Notes
Les données sont mappées entre le type DAO_BOOL dans DAO et le type BOOL dans le jeu d’enregistrements.
Exemple
Voir DFX_Text.
Spécifications
En-tête : afxdao.h
DFX_Byte
Transfère des octets uniques entre les membres de données de champ d’un objet CDaoRecordset et les colonnes d’un enregistrement sur la source de données.
Syntaxe
void AFXAPI DFX_Byte(
CDaoFieldExchange* pFX,
LPCTSTR szName,
BYTE& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Paramètres
Pfx
Pointeur vers un objet de la classe CDaoFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type BYTE, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
dwBindOptions
Option qui vous permet de tirer parti du mécanisme de mise en mémoire tampon double de MFC pour détecter les champs de jeu d’enregistrements qui ont changé. La valeur par défaut, AFX_DAO_ENABLE_FIELD_CACHE, utilise la mise en mémoire tampon double. L’autre valeur possible est AFX_DAO_DISABLE_FIELD_CACHE. Si vous spécifiez cette valeur, MFC ne vérifie pas ce champ. Vous devez appeler SetFieldDirty
et SetFieldNull
vous-même.
Remarque
Vous pouvez contrôler si les données sont double mises en mémoire tampon par défaut en définissant CDaoRecordset ::m_bCheckCacheForDirtyFields.
Notes
Les données sont mappées entre le type DAO_BYTES dans DAO et le type BYTE dans le jeu d’enregistrements.
Exemple
Voir DFX_Text.
Spécifications
En-tête : afxdao.h
DFX_Currency
Transfère les données monétaires entre les membres de données de champ d’un objet CDaoRecordset et les colonnes d’un enregistrement sur la source de données.
Syntaxe
void AFXAPI DFX_Currency(
CDaoFieldExchange* pFX,
LPCTSTR szName,
COleCurrency& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Paramètres
Pfx
Pointeur vers un objet de la classe CDaoFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers une source de données, cette valeur est extraite du membre de données spécifié, de type COleCurrency. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
dwBindOptions
Option qui vous permet de tirer parti du mécanisme de mise en mémoire tampon double de MFC pour détecter les champs de jeu d’enregistrements qui ont changé. La valeur par défaut, AFX_DAO_ENABLE_FIELD_CACHE, utilise la mise en mémoire tampon double. L’autre valeur possible est AFX_DAO_DISABLE_FIELD_CACHE. Si vous spécifiez cette valeur, MFC ne vérifie pas ce champ. Vous devez appeler SetFieldDirty
et SetFieldNull
vous-même.
Remarque
Vous pouvez contrôler si les données sont double mises en mémoire tampon par défaut en définissant CDaoRecordset ::m_bCheckCacheForDirtyFields.
Notes
Les données sont mappées entre le type DAO_CURRENCY dans DAO et le type COleCurrency dans le jeu d’enregistrements.
Exemple
Voir DFX_Text.
Spécifications
En-tête : afxdao.h
DFX_DateTime
Transfère les données d’heure et de date entre les membres de données de champ d’un objet CDaoRecordset et les colonnes d’un enregistrement sur la source de données.
Syntaxe
void AFXAPI DFX_DateTime(
CDaoFieldExchange* pFX,
LPCTSTR szName,
COleDateTime& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Paramètres
Pfx
Pointeur vers un objet de la classe CDaoFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. La fonction prend une référence à un objet COleDateTime . Pour un transfert d’un jeu d’enregistrements vers la source de données, cette valeur est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
dwBindOptions
Option qui vous permet de tirer parti du mécanisme de mise en mémoire tampon double de MFC pour détecter les champs de jeu d’enregistrements qui ont changé. La valeur par défaut, AFX_DAO_ENABLE_FIELD_CACHE, utilise la mise en mémoire tampon double. L’autre valeur possible est AFX_DAO_DISABLE_FIELD_CACHE. Si vous spécifiez cette valeur, MFC ne vérifie pas ce champ. Vous devez appeler SetFieldDirty
et SetFieldNull
vous-même.
Remarque
Vous pouvez contrôler si les données sont double mises en mémoire tampon par défaut en définissant CDaoRecordset ::m_bCheckCacheForDirtyFields.
Notes
Les données sont mappées entre le type DAO_DATE dans DAO et le type COleDateTime dans le jeu d’enregistrements.
Remarque
COleDateTime
remplace CTime et TIMESTAMP_STRUCT à cet effet dans les classes DAO. CTime
et TIMESTAMP_STRUCT sont toujours utilisés pour les classes d’accès aux données basées sur ODBC.
Exemple
Voir DFX_Text.
Spécifications
En-tête : afxdao.h
DFX_Double
Transfère les données flottantes doubles entre les membres de données de champ d’un objet CDaoRecordset et les colonnes d’un enregistrement sur la source de données.
Syntaxe
void AFXAPI DFX_Double(
CDaoFieldExchange* pFX,
LPCTSTR szName,
double& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Paramètres
Pfx
Pointeur vers un objet de la classe CDaoFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type double
, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
dwBindOptions
Option qui vous permet de tirer parti du mécanisme de mise en mémoire tampon double de MFC pour détecter les champs de jeu d’enregistrements qui ont changé. La valeur par défaut, AFX_DAO_ENABLE_FIELD_CACHE, utilise la mise en mémoire tampon double. L’autre valeur possible est AFX_DAO_DISABLE_FIELD_CACHE. Si vous spécifiez cette valeur, MFC ne vérifie pas ce champ. Vous devez appeler SetFieldDirty
et SetFieldNull
vous-même.
Remarque
Vous pouvez contrôler si les données sont double mises en mémoire tampon par défaut en définissant CDaoRecordset ::m_bCheckCacheForDirtyFields.
Notes
Les données sont mappées entre le type DAO_R8 dans DAO et le type double float dans le jeu d’enregistrements.
Exemple
Voir DFX_Text.
Spécifications
En-tête : afxdao.h
DFX_Long
Transfère les données entières longues entre les membres de données de champ d’un objet CDaoRecordset et les colonnes d’un enregistrement sur la source de données.
Syntaxe
void AFXAPI DFX_Long(
CDaoFieldExchange* pFX,
LPCTSTR szName,
long& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Paramètres
Pfx
Pointeur vers un objet de la classe CDaoFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type long
, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
dwBindOptions
Option qui vous permet de tirer parti du mécanisme de mise en mémoire tampon double de MFC pour détecter les champs de jeu d’enregistrements qui ont changé. La valeur par défaut, AFX_DAO_ENABLE_FIELD_CACHE, utilise la mise en mémoire tampon double. L’autre valeur possible est AFX_DAO_DISABLE_FIELD_CACHE. Si vous spécifiez cette valeur, MFC ne vérifie pas ce champ. Vous devez appeler SetFieldDirty
et SetFieldNull
vous-même.
Remarque
Vous pouvez contrôler si les données sont double mises en mémoire tampon par défaut en définissant CDaoRecordset ::m_bCheckCacheForDirtyFields.
Notes
Les données sont mappées entre le type DAO_I4 dans DAO et le type long
dans le jeu d’enregistrements.
Exemple
Voir DFX_Text.
Spécifications
En-tête : afxdao.h
DFX_LongBinary
Important : il est recommandé d’utiliser DFX_Binary au lieu de cette fonction.
Syntaxe
void AFXAPI DFX_LongBinary(
CDaoFieldExchange* pFX,
LPCTSTR szName,
CLongBinary& value,
DWORD dwPreAllocSize = AFX_DAO_LONGBINARY_DEFAULT_SIZE,
DWORD dwBindOptions = 0);
Paramètres
Pfx
Pointeur vers un objet de la classe CDaoFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type CLongBinary, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
dwPreAllocSize
L’infrastructure préalloue cette quantité de mémoire. Si vos données sont plus volumineuses, l’infrastructure allouera plus d’espace si nécessaire. Pour de meilleures performances, définissez cette taille sur une valeur suffisamment grande pour empêcher les réaffectations.
dwBindOptions
Option qui vous permet de tirer parti du mécanisme de mise en mémoire tampon double de MFC pour détecter les champs de jeu d’enregistrements qui ont changé. La valeur par défaut, AFX_DISABLE_FIELD_CACHE, n’utilise pas la mise en mémoire tampon double. L’autre valeur possible est AFX_DAO_ENABLE_FIELD_CACHE. Utilise la mise en mémoire tampon double et vous n’avez pas à effectuer de travail supplémentaire pour marquer les champs sales ou Null. Pour des raisons de performances et de mémoire, évitez cette valeur, sauf si vos données binaires sont relativement petites.
Remarque
Vous pouvez contrôler si les données sont double mises en mémoire tampon par défaut en définissant CDaoRecordset ::m_bCheckCacheForDirtyFields.
Notes
DFX_LongBinary
est fourni pour la compatibilité avec les classes ODBC MFC. La DFX_LongBinary
fonction transfère les données blob (binary large-object) à l’aide de la classe CLongBinary
entre les membres de données de champ d’un objet CDaoRecordset et les colonnes d’un enregistrement sur la source de données. Les données sont mappées entre le type DAO_BYTES dans DAO et le type CLongBinary dans le jeu d’enregistrements.
Exemple
Voir DFX_Text.
Spécifications
En-tête : afxdao.h
DFX_Short
Transfère les données entières courtes entre les membres de données de champ d’un objet CDaoRecordset et les colonnes d’un enregistrement sur la source de données.
Syntaxe
void AFXAPI DFX_Short(
CDaoFieldExchange* pFX,
LPCTSTR szName,
short& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Paramètres
Pfx
Pointeur vers un objet de la classe CDaoFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type short
, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
dwBindOptions
Option qui vous permet de tirer parti du mécanisme de mise en mémoire tampon double de MFC pour détecter les champs de jeu d’enregistrements qui ont changé. La valeur par défaut, AFX_DAO_ENABLE_FIELD_CACHE, utilise la mise en mémoire tampon double. L’autre valeur possible est AFX_DAO_DISABLE_FIELD_CACHE. Si vous spécifiez cette valeur, MFC ne vérifie pas ce champ. Vous devez appeler SetFieldDirty
et SetFieldNull
vous-même.
Remarque
Vous pouvez contrôler si les données sont double mises en mémoire tampon par défaut en définissant CDaoRecordset ::m_bCheckCacheForDirtyFields.
Notes
Les données sont mappées entre le type DAO_I2 dans DAO et le type short
dans le jeu d’enregistrements.
Remarque
DFX_Short
équivaut à RFX_Int pour les classes ODBC.
Exemple
Voir DFX_Text.
Spécifications
En-tête : afxdao.h
DFX_Single
Transfère les données à virgule flottante entre les membres de données de champ d’un objet CDaoRecordset et les colonnes d’un enregistrement sur la source de données.
Syntaxe
void AFXAPI DFX_Single(
CDaoFieldExchange* pFX,
LPCTSTR szName,
float& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Paramètres
Pfx
Pointeur vers un objet de la classe CDaoFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type float
, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
dwBindOptions
Option qui vous permet de tirer parti du mécanisme de mise en mémoire tampon double de MFC pour détecter les champs de jeu d’enregistrements qui ont changé. La valeur par défaut, AFX_DAO_ENABLE_FIELD_CACHE, utilise la mise en mémoire tampon double. L’autre valeur possible est AFX_DAO_DISABLE_FIELD_CACHE. Si vous spécifiez cette valeur, MFC ne vérifie pas ce champ. Vous devez appeler SetFieldDirty
et SetFieldNull
vous-même.
Remarque
Vous pouvez contrôler si les données sont double mises en mémoire tampon par défaut en définissant CDaoRecordset ::m_bCheckCacheForDirtyFields.
Notes
Les données sont mappées entre le type DAO_R4 dans DAO et le type float
dans le jeu d’enregistrements.
Exemple
Voir DFX_Text.
Spécifications
En-tête : afxdao.h
DFX_Text
Transfère les CString
données entre les membres de données de champ d’un objet CDaoRecordset et des colonnes d’un enregistrement sur la source de données.
Syntaxe
void AFXAPI DFX_Text(
CDaoFieldExchange* pFX,
LPCTSTR szName,
CString& value,
int nPreAllocSize = AFX_DAO_TEXT_DEFAULT_SIZE,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Paramètres
Pfx
Pointeur vers un objet de la classe CDaoFieldExchange. Cet objet contient des informations pour définir le contexte de chaque appel de la fonction.
szName
Nom d’une colonne de données.
valeur
Valeur stockée dans le membre de données indiqué : valeur à transférer. Pour un transfert d’un jeu d’enregistrements vers la source de données, la valeur, de type CString, est extraite du membre de données spécifié. Pour un transfert de la source de données vers le jeu d’enregistrements, la valeur est stockée dans le membre de données spécifié.
nPreAllocSize
L’infrastructure préalloue cette quantité de mémoire. Si vos données sont plus volumineuses, l’infrastructure allouera plus d’espace si nécessaire. Pour de meilleures performances, définissez cette taille sur une valeur suffisamment grande pour empêcher les réaffectations.
dwBindOptions
Option qui vous permet de tirer parti du mécanisme de mise en mémoire tampon double de MFC pour détecter les champs de jeu d’enregistrements qui ont changé. La valeur par défaut, AFX_DAO_ENABLE_FIELD_CACHE, utilise la mise en mémoire tampon double. L’autre valeur possible est AFX_DAO_DISABLE_FIELD_CACHE. Si vous spécifiez cette valeur, MFC ne vérifie pas ce champ. Vous devez appeler SetFieldDirty et SetFieldNull vous-même.
Remarque
Vous pouvez contrôler si les données sont double mises en mémoire tampon par défaut en définissant CDaoRecordset ::m_bCheckCacheForDirtyFields.
Notes
Les données sont mappées entre le type DAO_CHAR dans DAO (ou, si le symbole _UNICODE est défini, DAO_WCHAR) et tapez CString dans le jeu d’enregistrements. n
Exemple
Cet exemple montre plusieurs appels à DFX_Text
. Notez également les deux appels à CDaoFieldExchange ::SetFieldType. Vous devez écrire le premier appel vers SetFieldType
et son appel DFX . Le deuxième appel et ses appels DFX associés sont normalement écrits par l’Assistant code qui a généré la classe.
void CCustSet::DoFieldExchange(CDaoFieldExchange* pFX)
{
pFX->SetFieldType(CDaoFieldExchange::param);
DFX_Text(pFX, _T("Param"), m_strParam);
pFX->SetFieldType(CDaoFieldExchange::outputColumn);
DFX_Short(pFX, _T("EmployeeID"), m_EmployeeID);
DFX_Text(pFX, _T("LastName"), m_LastName);
DFX_Short(pFX, _T("Age"), m_Age);
DFX_DateTime(pFX, _T("hire_date"), m_hire_date);
DFX_DateTime(pFX, _T("termination_date"), m_termination_date);
CDaoRecordset::DoFieldExchange(pFX);
}
Spécifications
En-tête : afxdao.h
Voir aussi
Macros et globals
CRecordset ::D oFieldExchange
CRecordset ::D oBulkFieldExchange
CDaoRecordset ::D oFieldExchange