Partager via


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

Voir aussi

Référence

RFX_Binary_Bulk

RFX_Bool_Bulk

RFX_Byte_Bulk

RFX_Date_Bulk

RFX_Double_Bulk

RFX_Int_Bulk

RFX_Long_Bulk

RFX_Single_Bulk

CFieldExchange::SetFieldType

Concepts

macro MFC et Globals