次の方法で共有


RFX_Text_Bulk

更新 : 2007 年 11 月

複数行の文字データを ODBC データ ソースの列から CRecordset 派生オブジェクト内の対応する配列に転送します。

void RFX_Text_Bulk(
   CFieldExchange* pFX,
   LPCTSTR szName,
   LPSTR* prgStrVals,
   long** prgLengths,
   int nMaxLength 
);

パラメータ

  • pFX
    CFieldExchange オブジェクトへのポインタを返します。このオブジェクトは、関数の各呼び出しのコンテキストを定義する情報を保持します。詳細については、「レコード フィールド エクスチェンジ : RFX の動作のしくみ」を参照してください。

  • szName
    データ列の名前。

  • prgStrVals
    LPSTR の値の配列へのポインタ。この配列には、データ ソースからレコードセットへコピーされるデータが格納されます。現在のバージョンの ODBC では、これらの値は Unicode ではありません。

  • prgLengths
    長整数型 (long) の配列へのポインタ。この配列には、prgStrVals で指定された配列内のそれぞれの値の長さが、バイト単位で保存されます。この長さには、終端の NULL 文字は含まれません。対応するデータ アイテムの値が Null の場合、SQL_NULL_DATA の値が格納されます。詳細については、『ODBC SDK Programmer's Reference』の「ODBC API Functions」の「SQLBindCol」を参照してください。

  • nMaxLength
    prgStrVals によって指定された配列に保存されている値の、最大長です。終端の NULL 文字を含みます。データが切り捨てられないように、最大のデータ アイテムを格納するのに十分大きな値を指定してください。

解説

データ ソース列は、SQL_LONGVARCHARSQL_CHARSQL_VARCHARSQL_DECIMAL、または SQL_NUMERIC のいずれかの ODBC 型です。レコードセットでは、LPSTR へのポインタ型のフィールド データ メンバを定義する必要があります。

prgStrVals と prgLengths を NULL で初期化した場合は、行セットのサイズと等しいサイズの配列が、自動的に割り当てられます。

akfb4d9a.alert_note(ja-jp,VS.90).gifメモ :

バルク レコード フィールド エクスチェンジでは、データ ソースからレコードセット オブジェクトにデータが転送されるだけです。レコードセットを更新可能にするには、ODBC API の関数 SQLSetPos を使用します。

詳細については、「レコードセット : バルク行フェッチ (ODBC)」と「レコード フィールド エクスチェンジ (RFX)」を参照してください。

使用例

DoBulkFieldExchange のオーバーライドでは、呼び出しは手動で記述する必要があります。この例は、RFX_Text_Bulk の呼び出しと、データ転送のための RFX_Long_Bulk の呼び出しを示しています。これらの呼び出しの前に、CFieldExchange::SetFieldType を呼び出します。このパラメータには、Bulk RFX 関数ではなく 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);
}

必要条件

ヘッダー : afxdb.h

参照

概念

MFC マクロとグローバル

参照

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