レコード フィールド エクスチェンジ : RFX 関数の使い方

更新 : 2007 年 11 月

このトピックでは、DoFieldExchange オーバーライドの中心部分となる RFX 関数呼び出しの使用方法について説明します。

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

このトピックの内容は、バルク行フェッチが実装されていない CRecordset の派生クラスを対象にしています。バルク行フェッチを使用している場合は、バルク レコード フィールド エクスチェンジ (Bulk RFX: Bulk Record Field Exchange) が実装されています。Bulk RFX と RFX は似ています。両者の差異については、「レコードセット : バルク行フェッチ (ODBC)」を参照してください。

RFX グローバル関数は、データ ソースの列とレコードセットのフィールド データ メンバ間でデータを交換します。レコードセットのメンバ関数 DoFieldExchange に RFX 関数呼び出しコードを作成します。ここでは、RFX 関数の概要と RFX 関数が用意されているデータ型について説明します。新しく定義したデータ型に対する RFX 関数を独自に作成する方法については、「テクニカル ノート 43: RFX ルーチン」で説明されています。

RFX 関数の構文

各 RFX 関数は、次の 3 つのパラメータを使用します (これ以外に 1 個または 2 個のオプション パラメータを使用する関数もあります)。

  • CFieldExchange オブジェクトへのポインタを返します。DoFieldExchange に渡された pFX ポインタをそのまま渡します。

  • データ ソース中の列名。

  • レコードセット クラス内の対応するフィールド データ メンバまたはパラメータ データ メンバの名前。

  • 転送する文字列または配列の最大長を指定できる関数もあります。既定値は 255 バイトですが、必要に応じて変更できます。最大値は、CString オブジェクトの最大値である INT_MAX (2,147,483,647 バイト) ですが、通常はそれ以前にドライバの限界に達します。

  • RFX_Text 関数では、列のデータ型を指定する第 5 パラメータを取る場合もあります。

詳細については、『MFC リファレンス』の「マクロ、グローバル関数、およびグローバル変数」で各 RFX 関数の解説を参照してください。パラメータの特殊な使い方の例については、「レコードセット : 集計値の計算 (ODBC)」を参照してください。

RFX 関数とデータ型

クラス ライブラリには、データ ソースとレコードセット間で各種のデータ型を転送するための RFX 関数が多数用意されています。次の表に、RFX 関数とデータ型の対応を示します。RFX 関数を直接呼び出すには、データ型に応じてこれらの関数を使い分けます。

関数

データ型

RFX_Bool

BOOL

RFX_Byte

BYTE

RFX_Binary

CByteArray

RFX_Double

double

RFX_Single

float

RFX_Int

int

RFX_Long

long

RFX_LongBinary

CLongBinary

RFX_Text

CString

RFX_Date

CTime

詳細については、『MFC リファレンス』の「マクロ、グローバル関数、およびグローバル変数」で各 RFX 関数の解説を参照してください。C++ のデータ型の SQL のデータ型への対応については、「SQL : SQL と C++ のデータ型 (ODBC)」の表「ANSI SQL データ型と C++ データ型の対応」を参照してください。

参照

概念

レコード フィールド エクスチェンジ (RFX)

レコード フィールド エクスチェンジ : RFX の動作のしくみ

レコードセット : パラメータを利用したレコードセット (ODBC)

レコードセット : データ列を動的に結びつける方法 (ODBC)

参照

CRecordset クラス

CFieldExchange クラス