Partager via


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 CRecordsetobjet 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 SQLSetPosAPI 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 CRecordsetobjet 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 SQLSetPosAPI 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 CRecordsetobjet 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 SQLSetPosAPI 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 CRecordsetobjet 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 SQLSetPosAPI 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 CRecordsetobjet 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 SQLSetPosAPI 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 CRecordsetobjet 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 SQLSetPosAPI 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 CRecordsetobjet 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 SQLSetPosAPI 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 CRecordsetobjet 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 SQLSetPosAPI 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

COleDateTimeremplace 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