RFX_Text_Bulk
Transfère plusieurs rangées de caractères d'une colonne d'une source de données ODBC à un tableau correspondant dans un objet dérivé de CRecordset.
void RFX_Text_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
LPSTR* prgStrVals,
long** prgLengths,
int nMaxLength
);
Paramètres
pFX
Un 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 Échange de champs d'enregistrement : Comment RFX fonctionne.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 au jeu d'enregistrements. Notez qu'avec la version actuelle d'ODBC, ces valeurs ne peut pas être Unicode.prgLengths
Pointeur vers un tableau d'entiers de type long. Cette table stocke la longueur en octets de toutes les valeurs dans le tableau vers lequel pointe prgStrVals. Cette longueur ne compte pas le caractère null de fin. Notez que la valeur SQL_NULL_DATA est enregistrée si l'élément de données correspondante contient une valeur NULL. Pour plus d'informations, consultez la fonction SQLBindCol de l'API ODBC dans le guide de référence du programmeur ODBC.nMaxLength
La longueur maximale autorisée des valeurs stockées dans la table référencé par prgStrVals, en comptant le caractère null d'arrêt. Pour vous assurer que les données ne seront pas tronquées, passez une valeur suffisamment élevée pour recevoir le plus grand élément de données attendu.
Notes
La colonne de source de données peut être d'un type ODBC de SQL_LONGVARCHAR, de SQL_CHAR, de SQL_VARCHAR, de SQL_DECIMAL, ou de SQL_NUMERIC. Le recordset doit définir un membre de données de champ de type LPSTR.
Si vous initialisez prgStrVals et prgLengths sur NULL, les tableaux vers lesquels ils pointent sont alloués automatiquement, avec des tailles égales à la taille de l'ensemble de lignes.
Notes
Le mécanisme RFX en bloc transfère seulement un jeu de lignes de données entre la source de données et l'objet recordset.Pour rendre votre ensemble modifiable, vous devez utiliser la fonction SQLSetPos de l'API ODBC.
Pour plus d'informations, consultez les articles Record Field Exchange (RFX) et Recordset : extraction globale d'enregistrements (ODBC).
Exemple
Vous devez entrer manuellement des appels dans votre redéfinition de DoBulkFieldExchange. Cet exemple illustre 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 de RFX au lieu des fonctions Bulk RFX.
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);
}
Configuration requise
En-tête: afxdb.h