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_LONGVARCHAR、SQL_CHAR、SQL_VARCHAR、SQL_DECIMAL、または SQL_NUMERIC のいずれかの ODBC 型です。レコードセットでは、LPSTR へのポインタ型のフィールド データ メンバを定義する必要があります。
prgStrVals と prgLengths を NULL で初期化した場合は、行セットのサイズと等しいサイズの配列が、自動的に割り当てられます。
メモ : |
---|
バルク レコード フィールド エクスチェンジでは、データ ソースからレコードセット オブジェクトにデータが転送されるだけです。レコードセットを更新可能にするには、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