レコード フィールド エクスチェンジ (RFX) 関数
ここでは、レコードセット オブジェクトとそのデータ ソース間のデータ転送を自動化したり、データに対してその他の操作を実行したりするためのレコード フィールド エクスチェンジの関数 (RFX、 バルク RFX、および DFX) の一覧を示します。
ODBC ベースのクラスを使用し、バルク行フェッチを実装している場合は、データ ソース列に対応する各データ メンバーに対してバルク RFX 関数を呼び出すことによって、 DoBulkFieldExchange
の CRecordset
メンバー関数を手動でオーバーライドする必要があります。
ODBC ベースのクラスで一括行フェッチを実装していない場合、または DAO ベースのクラス (古い形式) を使用している場合、ClassWizard はレコードセット内の各フィールド データ メンバーに対して RFX 関数 (ODBC クラスの場合) または DFX 関数 (DAO クラスの場合) を呼び出すことによって、CRecordset
またはCDaoRecordset
のDoFieldExchange
メンバー関数をオーバーライドします。
レコード フィールド エクスチェンジ関数は、フレームワークが DoFieldExchange
または DoBulkFieldExchange
を呼び出すたびにデータを転送します。 それぞれの関数が特定のデータ型を転送します。
これらの関数の使い方の詳細については、「 レコード フィールド エクスチェンジ: RFX のしくみ (ODBC)」を参照してください。 バルク行フェッチの詳細については、「 レコードセット: バルク行フェッチ (ODBC)」を参照してください。
動的にバインドするデータの列では、RFX 関数または DFX 関数を手動で呼び出すこともできます。詳細については、「 レコードセット: データ列を動的に結びつける方法 (ODBC)」を参照してください。 また、独自のカスタム RFX ルーチンまたは DFX ルーチンを記述することもできます。詳細については、テクニカル ノート 43 (ODBC の場合) およびテクニカル ノート 53 (DAO の場合) を参照してください。
DoBulkFieldExchange
関数に表示される RFX 関数と Bulk RFX 関数の例については、RFX_Textおよび [RFX_Text_Bulk]#rfx_text_bulk) を参照してください。 DFX 関数は RFX 関数によく似ています。
RFX 関数 (ODBC)
名前 | 説明 |
---|---|
RFX_Binary | CByteArray型のバイト配列を転送します。 |
RFX_Bool | ブール型のデータを転送します。 |
RFX_Byte | シングル バイトのデータを転送します。 |
RFX_Date | CTimeまたはTIMESTAMP_STRUCTを使用して、時刻と日付のデータを転送します。 |
RFX_Double | 倍精度浮動小数点型のデータを転送します。 |
RFX_Int | 整数型のデータを転送します。 |
RFX_Long | 長整数型のデータを転送します。 |
RFX_LongBinary | CLongBinary クラスのオブジェクトを使用して、バイナリ ラージ オブジェクト (BLOB) データを転送します。 |
RFX_Single | 浮動小数点型のデータを転送します。 |
RFX_Text | 文字列型のデータを転送します。 |
バルク RFX 関数 (ODBC)
名前 | 説明 |
---|---|
RFX_Binary_Bulk | バイト データの配列を転送します。 |
RFX_Bool_Bulk | ブール型のデータの配列を転送します。 |
RFX_Byte_Bulk | シングル バイトの配列を転送します。 |
RFX_Date_Bulk | TIMESTAMP_STRUCT型のデータの配列を転送します。 |
RFX_Double_Bulk | 倍精度浮動小数点型のデータの配列を転送します。 |
RFX_Int_Bulk | 整数型のデータの配列を転送します。 |
RFX_Long_Bulk | 長整数型のデータの配列を転送します。 |
RFX_Single_Bulk | 浮動小数点型のデータの配列を転送します。 |
RFX_Text_Bulk | LPSTR型のデータの配列を転送します。 |
DFX 関数 (DAO)
名前 | 説明 |
---|---|
DFX_Binary | CByteArray型のバイト配列を転送します。 |
DFX_Bool | ブール型のデータを転送します。 |
DFX_Byte | シングル バイトのデータを転送します。 |
DFX_Currency | COleCurrency型の通貨データを転送します。 |
DFX_DateTime | COleDateTime型の時刻と日付データを転送します。 |
DFX_Double | 倍精度浮動小数点型のデータを転送します。 |
DFX_Long | 長整数型のデータを転送します。 |
DFX_LongBinary | CLongBinary クラスのオブジェクトを使用して、バイナリ ラージ オブジェクト (BLOB) データを転送します。 DAO の場合は、代わりに DFX_Binary を使用することをお勧めします。 |
DFX_Short | 短整数型のデータを転送します。 |
DFX_Single | 浮動小数点型のデータを転送します。 |
DFX_Text | 文字列型のデータを転送します。 |
=============================================
RFX_Binary
CRecordset
オブジェクトのフィールド データ メンバーと、ODBC 型SQL_BINARY、SQL_VARBINARY、またはSQL_LONGVARBINARYのデータ ソース上のレコードの列の間でバイト配列を転送します。
構文
void RFX_Binary(
CFieldExchange* pFX,
const char* szName,
CByteArray& value,
int nMaxLength = 255);
パラメーター
pFX
クラス CFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 CFieldExchange
オブジェクトで指定できる操作の詳細については、「レコード フィールド交換: RFX のしくみ 」の記事を参照してください。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 CByteArray 型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
nMaxLength
転送される文字列または配列の最大許容長。 nMaxLength の既定値は 255 です。 有効な値は 1 ~ INT_MAXです。 フレームワークは、この量の領域をデータに割り当てます。 最適なパフォーマンスを得るために、予想される最大のデータ項目に対応するのに十分な大きさの値を渡します。
解説
これらの型のデータ ソース内のデータは、レコードセット内の型 CByteArray
にマップされます。
例
RFX_Textを参照してください。
要件
Header: afxdb.h
RFX_Bool
CRecordset
オブジェクトのフィールド データ メンバーと ODBC 型SQL_BITのデータ ソース上のレコードの列の間でブールデータを転送します。
構文
void RFX_Bool(
CFieldExchange* pFX,
const char* szName,
BOOL& value);
パラメーター
pFX
クラス CFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 CFieldExchange
オブジェクトで指定できる操作の詳細については、「レコード フィールド交換: RFX のしくみ 」の記事を参照してください。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、BOOL 型の値は、指定されたデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
例
RFX_Textを参照してください。
要件
Header: afxdb.h
RFX_Byte
CRecordset
オブジェクトのフィールド データ メンバーと ODBC 型SQL_TINYINTデータ ソース上のレコードの列の間で 1 バイトを転送します。
構文
void RFX_Byte(
CFieldExchange* pFX,
const char* szName,
BYTE& value);
パラメーター
pFX
クラス CFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 CFieldExchange
オブジェクトで指定できる操作の詳細については、「レコード フィールド交換: RFX のしくみ 」の記事を参照してください。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送では、BYTE 型の値が指定されたデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
例
RFX_Textを参照してください。
要件
Header: afxdb.h
RFX_Date
CRecordset
オブジェクトのフィールド データ メンバーと、ODBC 型SQL_DATE、SQL_TIME、またはSQL_TIMESTAMPのデータ ソース上のレコードの列の間で、CTime
またはTIMESTAMP_STRUCTデータを転送します。
構文
void RFX_Date(
CFieldExchange* pFX,
const char* szName,
CTime& value);
void RFX_Date(
CFieldExchange* pFX,
const char* szName,
TIMESTAMP_STRUCT& value);
void RFX_Date(
CFieldExchange* pFX,
const char* szName,
COleDateTime& value);
パラメーター
pFX
クラス CFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 CFieldExchange
オブジェクトで指定できる操作の詳細については、「レコード フィールド交換: RFX のしくみ 」の記事を参照してください。
szName
データ列の名前。
value
指定されたデータ メンバーに格納されている値。転送する値。 関数のさまざまなバージョンでは、値に対して異なるデータ型が使用されます。
関数の最初のバージョンは、 CTime オブジェクトへの参照を受け取ります。 レコードセットからデータ ソースへの転送の場合、この値は指定されたデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
関数の 2 番目のバージョンは、 TIMESTAMP_STRUCT
構造体への参照を受け取ります。 この構造体は、呼び出しの前に自分で設定する必要があります。 このバージョンでは、ダイアログ データ交換 (DDX) のサポートもコード ウィザードのサポートも使用できません。 3 番目のバージョンの関数は、 COleDateTime オブジェクトへの参照を受け取る点を除き、最初のバージョンと同様に動作します。
解説
関数の CTime
バージョンでは、中間処理のオーバーヘッドが発生し、範囲がやや限られています。 これらの要因のいずれかが制限されすぎる場合は、2 番目のバージョンの関数を使用します。 ただし、コード ウィザードと DDX サポートの欠如と、自分で構造を設定する必要があることに注意してください。
例
RFX_Textを参照してください。
要件
Header: afxdb.h
RFX_Double
CRecordset
オブジェクトフィールド データ メンバーと ODBC 型SQL_DOUBLEのデータ ソース上のレコードの列の間で、浮動小数点型のデータを転送します。
構文
void RFX_Double(
CFieldExchange* pFX,
const char* szName,
double& value);
パラメーター
pFX
クラス CFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 CFieldExchange
オブジェクトで指定できる操作の詳細については、「レコード フィールド交換: RFX のしくみ 」の記事を参照してください。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 double
型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
例
RFX_Textを参照してください。
要件
Header: afxdb.h
RFX_Int
CRecordset
オブジェクトのフィールド データ メンバーと ODBC 型のデータ ソース上のレコードの列の間で整数データSQL_SMALLINT転送します。
構文
void RFX_Int(
CFieldExchange* pFX,
const char* szName,
int& value);
パラメーター
pFX
クラス CFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 CFieldExchange
オブジェクトで指定できる操作の詳細については、「レコード フィールド交換: RFX のしくみ 」の記事を参照してください。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 int
型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
例
RFX_Textを参照してください。
要件
Header: afxdb.h
RFX_Long
CRecordset
オブジェクトのフィールド データ メンバーと ODBC 型SQL_INTEGERのデータ ソース上のレコードの列の間で、長整数データを転送します。
構文
void RFX_Long(
CFieldExchange* pFX,
const char* szName,
LONG&
value );
パラメーター
pFX
クラス CFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 CFieldExchange
オブジェクトで指定できる操作の詳細については、「レコード フィールド交換: RFX のしくみ 」の記事を参照してください。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 long
型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
例
RFX_Textを参照してください。
要件
Header: afxdb.h
RFX_LongBinary
CRecordset
オブジェクトのフィールド データ メンバーと ODBC 型SQL_LONGVARBINARYまたはSQL_LONGVARCHARのデータ ソース上のレコードの列の間で、クラス CLongBinary を使用してバイナリ ラージ オブジェクト (BLOB) データを転送します。
構文
void RFX_LongBinary(
CFieldExchange* pFX,
const char* szName,
CLongBinary& value);
パラメーター
pFX
クラス CFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 CFieldExchange
オブジェクトで指定できる操作の詳細については、「レコード フィールド交換: RFX のしくみ 」の記事を参照してください。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 CLongBinary
型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
例
RFX_Textを参照してください。
要件
Header: afxdb.h
RFX_Single
CRecordset
オブジェクトのフィールド データ メンバーと ODBC 型SQL_REALデータ ソース上のレコードの列の間で浮動小数点データを転送します。
構文
void RFX_Single(
CFieldExchange* pFX,
const char* szName,
float& value);
パラメーター
pFX
クラス CFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 CFieldExchange
オブジェクトで指定できる操作の詳細については、「レコード フィールド交換: RFX のしくみ 」の記事を参照してください。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 float
型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
例
RFX_Textを参照してください。
要件
Header: afxdb.h
RFX_Text
CRecordset
オブジェクトのフィールド データ メンバーと、ODBC 型SQL_LONGVARCHAR、SQL_CHAR、SQL_VARCHAR、SQL_DECIMAL、またはSQL_NUMERICのデータ ソース上のレコードの列の間で、CString
データを転送します。
構文
void RFX_Text(
CFieldExchange* pFX,
const char* szName,
CString& value,
int nMaxLength = 255,
int nColumnType = SQL_VARCHAR,
short nScale = 0);
パラメーター
pFX
クラス CFieldExchange
のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 CFieldExchange
オブジェクトで指定できる操作の詳細については、「レコード フィールド交換: RFX のしくみ 」の記事を参照してください。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 CString
型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
nMaxLength
転送される文字列または配列の最大許容長。 nMaxLength の既定値は 255 です。 有効な値は 1 ~ INT_MAX) です。 フレームワークは、この量の領域をデータに割り当てます。 最適なパフォーマンスを得るために、予想される最大のデータ項目に対応するのに十分な大きさの値を渡します。
nColumnType
主にパラメーターに使用されます。 パラメーターのデータ型を示す整数。 この型は、フォーム SQL_XXXの ODBC データ型です。
nScale
ODBC 型のSQL_DECIMALまたはSQL_NUMERICの値のスケールを指定します。 nScale は、パラメーター値を設定する場合にのみ役立ちます。 詳細については、「 ODBC SDK プログラマ リファレンス」の付録 D の「有効桁数、小数点以下桁数、長さ、および表示サイズ」トピックを参照してください。
解説
これらのすべての型のデータ ソース内のデータは、レコードセット内の CString
との間でマップされます。
例
この例では、 RFX_Text
に対するいくつかの呼び出しを示します。 また、 CFieldExchange::SetFieldType
の 2 つの呼び出しにも注意してください。 パラメーターについては、 SetFieldType
とその RFX 呼び出しへの呼び出しを記述する必要があります。 出力列の呼び出しとそれに関連付けられている RFX 呼び出しは、通常、コード ウィザードによって記述されます。
void CCustomer::DoFieldExchange(CFieldExchange* pFX)
{
pFX->SetFieldType(CFieldExchange::outputColumn);
// Macros such as RFX_Text() and RFX_Int() are dependent on the
// type of the member variable, not the type of the field in the database.
// ODBC will try to automatically convert the column value to the requested type
RFX_Long(pFX, _T("[CustomerID]"), m_CustomerID);
RFX_Text(pFX, _T("[ContactFirstName]"), m_ContactFirstName);
RFX_Text(pFX, _T("[PostalCode]"), m_PostalCode);
RFX_Text(pFX, _T("[L_Name]"), m_L_Name);
RFX_Long(pFX, _T("[BillingID]"), m_BillingID);
pFX->SetFieldType(CFieldExchange::inputParam);
RFX_Text(pFX, _T("Param"), m_strParam);
}
要件
Header: afxdb.h
RFX_Binary_Bulk
ODBC データ ソースの列から、 CRecordset
派生オブジェクト内の対応する配列にバイト データの複数の行を転送します。
構文
void RFX_Binary_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BYTE** prgByteVals,
long** prgLengths,
int nMaxLength);
パラメーター
pFX
CFieldExchange オブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 詳細については、「 Record Field Exchange: How RFX works」を参照してください。
szName
データ列の名前。
prgByteVals
BYTE 値の配列へのポインター。 この配列には、データ ソースからレコードセットに転送されるデータが格納されます。
prgLengths
長整数の配列へのポインター。 この配列は、 prgByteVals が指す配列内の各値の長さをバイト単位で格納します。 対応するデータ項目に Null 値が含まれている場合、SQL_NULL_DATA値が格納されることに注意してください。 詳細については、「ODBC SDK プログラマ リファレンスの ODBC API 関数SQLBindCol
を参照してください。
nMaxLength
prgByteVals が指す配列に格納されている値の最大許容長。 データが切り捨てられないようにするには、予想される最大のデータ項目に対応できる十分な大きさの値を渡します。
解説
データ ソース列には、SQL_BINARY、SQL_VARBINARY、またはSQL_LONGVARBINARYの ODBC 型を指定できます。 レコードセットは、BYTE へのポインター型のフィールド データ メンバーを定義する必要があります。
prgByteValsとprgLengthsを NULL に初期化すると、それらが指す配列は自動的に割り当てられ、サイズは行セット サイズと同じになります。
Note
一括レコード フィールド交換では、データ ソースからレコードセット オブジェクトにデータのみが転送されます。 レコードセットを更新可能にするには、ODBC API 関数 SQLSetPos
を使用する必要があります。
詳細については、「 Recordset: Fetching Records in Bulk (ODBC) および Record Field Exchange (RFX)」を参照してください。
例
RFX_Text_Bulkを参照してください。
要件
Header: afxdb.h
RFX_Bool_Bulk
ODBC データ ソースの列から、 CRecordset
派生オブジェクト内の対応する配列に、複数行のブールデータを転送します。
構文
void RFX_Bool_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BOOL** prgBoolVals,
long** prgLengths);
パラメーター
pFX
CFieldExchange オブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 詳細については、「 Record Field Exchange: How RFX works」を参照してください。
szName
データ列の名前。
prgBoolVals
BOOL 値の配列へのポインター。 この配列には、データ ソースからレコードセットに転送されるデータが格納されます。
prgLengths
長整数の配列へのポインター。 この配列は、 prgBoolVals が指す配列内の各値の長さをバイト単位で格納します。 対応するデータ項目に Null 値が含まれている場合、SQL_NULL_DATA値が格納されることに注意してください。 詳細については、「ODBC SDK プログラマ リファレンスの ODBC API 関数SQLBindCol
を参照してください。
解説
データ ソース列には、ODBC 型のSQL_BITが必要です。 レコードセットは、BOOL へのポインター型のフィールド データ メンバーを定義する必要があります。
prgBoolVals と prgLengths を NULL に初期化すると、それらが指す配列は自動的に割り当てられ、サイズは行セット サイズと同じになります。
Note
一括レコード フィールド交換では、データ ソースからレコードセット オブジェクトにデータのみが転送されます。 レコードセットを更新可能にするには、ODBC API 関数 SQLSetPos
を使用する必要があります。
詳細については、「 Recordset: Fetching Records in Bulk (ODBC) および Record Field Exchange (RFX)」を参照してください。
例
RFX_Text_Bulkを参照してください。
要件
Header: afxdb.h
RFX_Byte_Bulk
ODBC データ ソースの列から、1 バイトの複数の行を、 CRecordset
派生オブジェクト内の対応する配列に転送します。
構文
void RFX_Byte_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BYTE** prgByteVals,
long** prgLengths);
パラメーター
pFX
CFieldExchange オブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 詳細については、「 Record Field Exchange: How RFX works」を参照してください。
szName
データ列の名前。
prgByteVals
BYTE 値の配列へのポインター。 この配列には、データ ソースからレコードセットに転送されるデータが格納されます。
prgLengths
長整数の配列へのポインター。 この配列は、 prgByteVals が指す配列内の各値の長さをバイト単位で格納します。 対応するデータ項目に Null 値が含まれている場合、SQL_NULL_DATA値が格納されることに注意してください。 詳細については、「ODBC SDK プログラマ リファレンスの ODBC API 関数SQLBindCol
を参照してください。
解説
データ ソース列には、odbc 型のSQL_TINYINTが必要です。 レコードセットは、BYTE へのポインター型のフィールド データ メンバーを定義する必要があります。
prgByteValsとprgLengthsを NULL に初期化すると、それらが指す配列は自動的に割り当てられ、サイズは行セット サイズと同じになります。
Note
一括レコード フィールド交換では、データ ソースからレコードセット オブジェクトにデータのみが転送されます。 レコードセットを更新可能にするには、ODBC API 関数 SQLSetPos
を使用する必要があります。
詳細については、「 Recordset: Fetching Records in Bulk (ODBC) および Record Field Exchange (RFX)」を参照してください。
例
RFX_Text_Bulkを参照してください。
要件
Header: afxdb.h
RFX_Date_Bulk
ODBC データ ソースの列から、 CRecordset
派生オブジェクト内の対応する配列に、TIMESTAMP_STRUCT データの複数の行を転送します。
構文
void RFX_Date_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
TIMESTAMP_STRUCT** prgTSVals,
long** prgLengths);
パラメーター
pFX
CFieldExchange オブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 詳細については、「 Record Field Exchange: How RFX works」を参照してください。
szName
データ列の名前。
prgTSVals
TIMESTAMP_STRUCT値の配列へのポインター。 この配列には、データ ソースからレコードセットに転送されるデータが格納されます。 TIMESTAMP_STRUCTデータ型の詳細については、「 ODBC SDK プログラマ リファレンス」の付録 D の「C データ型」トピックを参照してください。
prgLengths
長整数の配列へのポインター。 この配列は、 prgTSVals が指す配列内の各値の長さをバイト単位で格納します。 対応するデータ項目に Null 値が含まれている場合、SQL_NULL_DATA値が格納されることに注意してください。 詳細については、「ODBC SDK プログラマ リファレンスの ODBC API 関数SQLBindCol
を参照してください。
解説
データ ソース列には、SQL_DATE、SQL_TIME、またはSQL_TIMESTAMPの ODBC 型を指定できます。 レコードセットは、TIMESTAMP_STRUCTへのポインター型のフィールド データ メンバーを定義する必要があります。
prgTSVals と prgLengths を NULL に初期化すると、それらが指す配列は自動的に割り当てられ、サイズは行セット サイズと同じになります。
Note
一括レコード フィールド交換では、データ ソースからレコードセット オブジェクトにデータのみが転送されます。 レコードセットを更新可能にするには、ODBC API 関数 SQLSetPos
を使用する必要があります。
詳細については、「 Recordset: Fetching Records in Bulk (ODBC) および Record Field Exchange (RFX)」を参照してください。
例
RFX_Text_Bulkを参照してください。
要件
Header: afxdb.h
RFX_Double_Bulk
ODBC データ ソースの列から、倍精度浮動小数点データの複数の行を、 CRecordset
派生オブジェクト内の対応する配列に転送します。
構文
void RFX_Double_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
double** prgDblVals,
long** prgLengths);
パラメーター
pFX
CFieldExchange オブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 詳細については、「 Record Field Exchange: How RFX works」を参照してください。
szName
データ列の名前。
prgDblVals
double
値の配列へのポインター。 この配列には、データ ソースからレコードセットに転送されるデータが格納されます。
prgLengths
長整数の配列へのポインター。 この配列は、 prgDblVals が指す配列内の各値の長さをバイト単位で格納します。 対応するデータ項目に Null 値が含まれている場合、SQL_NULL_DATA値が格納されることに注意してください。 詳細については、「ODBC SDK プログラマ リファレンスの ODBC API 関数SQLBindCol
を参照してください。
解説
データ ソース列には、odbc 型のSQL_DOUBLEが必要です。 レコードセットは、 double
へのポインター型のフィールド データ メンバーを定義する必要があります。
prgDblVals と prgLengths を NULL に初期化すると、それらが指す配列は自動的に割り当てられ、サイズは行セット サイズと同じになります。
Note
一括レコード フィールド交換では、データ ソースからレコードセット オブジェクトにデータのみが転送されます。 レコードセットを更新可能にするには、ODBC API 関数 SQLSetPos
を使用する必要があります。
詳細については、「 Recordset: Fetching Records in Bulk (ODBC) および Record Field Exchange (RFX)」を参照してください。
例
RFX_Text_Bulkを参照してください。
要件
Header: afxdb.h
RFX_Int_Bulk
CRecordset
オブジェクトのフィールド データ メンバーと ODBC 型のデータ ソース上のレコードの列の間で整数データSQL_SMALLINT転送します。
構文
void RFX_Int(
CFieldExchange* pFX,
const char* szName,
int& value);
パラメーター
pFX
クラス CFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 CFieldExchange
オブジェクトで指定できる操作の詳細については、「レコード フィールド交換: RFX のしくみ 」の記事を参照してください。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 int
型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
例
RFX_Textを参照してください。
要件
Header: afxdb.h
RFX_Long_Bulk
ODBC データ ソースの列から、長整数データの複数の行を、 CRecordset
派生オブジェクト内の対応する配列に転送します。
構文
void RFX_Long_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
long** prgLongVals,
long** prgLengths);
パラメーター
pFX
CFieldExchange オブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 詳細については、「 Record Field Exchange: How RFX works」を参照してください。
szName
データ列の名前。
prgLongVals
長整数の配列へのポインター。 この配列には、データ ソースからレコードセットに転送されるデータが格納されます。
prgLengths
長整数の配列へのポインター。 この配列は、 prgLongVals が指す配列内の各値の長さをバイト単位で格納します。 対応するデータ項目に Null 値が含まれている場合、SQL_NULL_DATA値が格納されることに注意してください。 詳細については、「ODBC SDK プログラマ リファレンスの ODBC API 関数SQLBindCol
を参照してください。
解説
データ ソース列には、odbc 型のSQL_INTEGERが必要です。 レコードセットは、 long
へのポインター型のフィールド データ メンバーを定義する必要があります。
prgLongVals と prgLengths を NULL に初期化すると、それらが指す配列は自動的に割り当てられ、サイズは行セット サイズと同じになります。
Note
一括レコード フィールド交換では、データ ソースからレコードセット オブジェクトにデータのみが転送されます。 レコードセットを更新可能にするには、ODBC API 関数 SQLSetPos
を使用する必要があります。
詳細については、「 Recordset: Fetching Records in Bulk (ODBC) および Record Field Exchange (RFX)」を参照してください。
例
RFX_Text_Bulkを参照してください。
要件
Header: afxdb.h
RFX_Single_Bulk
ODBC データ ソースの列から、 CRecordset
派生オブジェクト内の対応する配列に複数行の浮動小数点データを転送します。
構文
void RFX_Single_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
float** prgFltVals,
long** prgLengths);
パラメーター
pFX
CFieldExchange オブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 詳細については、「 Record Field Exchange: How RFX works」を参照してください。
szName
データ列の名前。
prgFltVals
float
値の配列へのポインター。 この配列には、データ ソースからレコードセットに転送されるデータが格納されます。
prgLengths
長整数の配列へのポインター。 この配列は、 prgFltVals が指す配列内の各値の長さをバイト単位で格納します。 対応するデータ項目に Null 値が含まれている場合、SQL_NULL_DATA値が格納されることに注意してください。 詳細については、「ODBC SDK プログラマ リファレンスの ODBC API 関数SQLBindCol
を参照してください。
解説
データ ソース列には、odbc 型のSQL_REALが必要です。 レコードセットは、 float
へのポインター型のフィールド データ メンバーを定義する必要があります。
prgFltVals と prgLengths を NULL に初期化すると、それらが指す配列は自動的に割り当てられ、サイズは行セット サイズと同じになります。
Note
一括レコード フィールド交換では、データ ソースからレコードセット オブジェクトにデータのみが転送されます。 レコードセットを更新可能にするには、ODBC API 関数 SQLSetPos
を使用する必要があります。
詳細については、「 Recordset: Fetching Records in Bulk (ODBC) および Record Field Exchange (RFX)」を参照してください。
例
RFX_Text_Bulkを参照してください。
要件
Header: afxdb.h
RFX_Text_Bulk
ODBC データ ソースの列から、 CRecordset
派生オブジェクト内の対応する配列に複数行の文字データを転送します。
構文
void RFX_Text_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
LPSTR* prgStrVals,
long** prgLengths,
int nMaxLength);
パラメーター
pFX
CFieldExchange オブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。 詳細については、「 Record Field Exchange: How RFX works」を参照してください。
szName
データ列の名前。
prgStrVals
LPSTR 値の配列へのポインター。 この配列には、データ ソースからレコードセットに転送されるデータが格納されます。 ODBC の現在のバージョンでは、これらの値を Unicode にすることはできません。
prgLengths
長整数の配列へのポインター。 この配列は、 prgStrVals が指す配列内の各値の長さをバイト単位で格納します。 この長さは、null 終了文字を除外します。 対応するデータ項目に Null 値が含まれている場合、SQL_NULL_DATA値が格納されることに注意してください。 詳細については、「ODBC SDK プログラマ リファレンスの ODBC API 関数SQLBindCol
を参照してください。
nMaxLength
null 終端文字を含む、 prgStrVals が指す配列に格納される値の最大許容長。 データが切り捨てられないようにするには、予想される最大のデータ項目に対応できる十分な大きさの値を渡します。
解説
データ ソース列には、SQL_LONGVARCHAR、SQL_CHAR、SQL_VARCHAR、SQL_DECIMAL、またはSQL_NUMERICの ODBC 型を指定できます。 レコードセットは、LPSTR 型のフィールド データ メンバーを定義する必要があります。
prgStrVals と prgLengths を NULL に初期化すると、それらが指す配列は自動的に割り当てられ、サイズは行セット サイズと同じになります。
Note
一括レコード フィールド交換では、データ ソースからレコードセット オブジェクトにデータのみが転送されます。 レコードセットを更新可能にするには、ODBC API 関数 SQLSetPos
を使用する必要があります。
詳細については、「 Recordset: Fetching Records in Bulk (ODBC) および Record Field Exchange (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);
}
要件
Header: afxdb.h
DFX_Binary
CDaoRecordset オブジェクトのフィールド データ メンバーとデータ ソース上のレコードの列の間でバイト配列を転送します。
構文
void AFXAPI DFX_Binary(
CDaoFieldExchange* pFX,
LPCTSTR szName,
CByteArray& value,
int nPreAllocSize = AFX_DAO_BINARY_DEFAULT_SIZE,
DWORD dwBindOptions = 0);
パラメーター
pFX
クラス CDaoFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 CByteArray 型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
nPreAllocSize
フレームワークは、この量のメモリを事前に割り当て済みにします。 データが大きい場合、フレームワークは必要に応じてより多くの領域を割り当てられます。 パフォーマンスを向上させるには、このサイズを、再割り当てを防ぐのに十分な大きさの値に設定します。 既定のサイズは AFXDAO で定義されています。AFX_DAO_BINARY_DEFAULT_SIZEとしての H ファイル。
dwBindOptions
MFC のダブル バッファリング メカニズムを利用して、変更されたレコードセット フィールドを検出できるオプション。 既定の AFX_DAO_DISABLE_FIELD_CACHE では、二重バッファリングは使用されません。また、 SetFieldDirty および SetFieldNull を自分で呼び出す必要があります。 もう 1 つの値 (AFX_DAO_ENABLE_FIELD_CACHE) は二重バッファリングを使用するため、フィールドをダーティまたは Null にマークするために追加の作業を行う必要はありません。 パフォーマンスとメモリの理由から、バイナリ データが比較的小さい場合を除き、この値は避けてください。
Note
既定では、すべてのフィールドに対してデータをダブル バッファーするかどうかを制御するには、 CDaoRecordset::m_bCheckCacheForDirtyFields を設定します。
解説
DAO の型DAO_BYTESとレコードセットの型 CByteArray の間でデータがマップされます。
例
DFX_Textを参照してください。
要件
ヘッダー: afxdao.h
DFX_Bool
CDaoRecordset オブジェクトのフィールド データ メンバーとデータ ソース上のレコードの列の間でブールデータを転送します。
構文
void AFXAPI DFX_Bool(
CDaoFieldExchange* pFX,
LPCTSTR szName,
BOOL& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
パラメーター
pFX
クラス CDaoFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、BOOL 型の値は、指定されたデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
dwBindOptions
MFC のダブル バッファリング メカニズムを利用して、変更されたレコードセット フィールドを検出できるオプション。 既定のAFX_DAO_ENABLE_FIELD_CACHEでは、ダブル バッファリングが使用されます。 その他の使用可能な値はAFX_DAO_DISABLE_FIELD_CACHE。 この値を指定した場合、MFC はこのフィールドをチェックしません。 SetFieldDirty
を呼び出し、自分でSetFieldNull
する必要があります。
Note
CDaoRecordset::m_bCheckCacheForDirtyFields を設定することで、データが既定でダブル バッファリングされるかどうかを制御できます。
解説
DAO の型DAO_BOOLとレコードセットの BOOL 型の間でデータがマップされます。
例
DFX_Textを参照してください。
要件
ヘッダー: afxdao.h
DFX_Byte
CDaoRecordset オブジェクトのフィールド データ メンバーとデータ ソース上のレコードの列の間で 1 バイトを転送します。
構文
void AFXAPI DFX_Byte(
CDaoFieldExchange* pFX,
LPCTSTR szName,
BYTE& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
パラメーター
pFX
クラス CDaoFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送では、BYTE 型の値が指定されたデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
dwBindOptions
MFC のダブル バッファリング メカニズムを利用して、変更されたレコードセット フィールドを検出できるオプション。 既定のAFX_DAO_ENABLE_FIELD_CACHEでは、ダブル バッファリングが使用されます。 その他の使用可能な値はAFX_DAO_DISABLE_FIELD_CACHE。 この値を指定した場合、MFC はこのフィールドをチェックしません。 SetFieldDirty
を呼び出し、自分でSetFieldNull
する必要があります。
Note
CDaoRecordset::m_bCheckCacheForDirtyFields を設定することで、データが既定でダブル バッファリングされるかどうかを制御できます。
解説
DAO の型DAO_BYTESとレコードセットの BYTE 型の間でデータがマップされます。
例
DFX_Textを参照してください。
要件
ヘッダー: afxdao.h
DFX_Currency
CDaoRecordset オブジェクトのフィールド データ メンバーとデータ ソース上のレコードの列の間で通貨データを転送します。
構文
void AFXAPI DFX_Currency(
CDaoFieldExchange* pFX,
LPCTSTR szName,
COleCurrency& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
パラメーター
pFX
クラス CDaoFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、この値は、 COleCurrency 型の指定されたデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
dwBindOptions
MFC のダブル バッファリング メカニズムを利用して、変更されたレコードセット フィールドを検出できるオプション。 既定のAFX_DAO_ENABLE_FIELD_CACHEでは、ダブル バッファリングが使用されます。 その他の使用可能な値はAFX_DAO_DISABLE_FIELD_CACHE。 この値を指定した場合、MFC はこのフィールドをチェックしません。 SetFieldDirty
を呼び出し、自分でSetFieldNull
する必要があります。
Note
CDaoRecordset::m_bCheckCacheForDirtyFields を設定することで、データが既定でダブル バッファリングされるかどうかを制御できます。
解説
DAO の型DAO_CURRENCYとレコードセット内の型 COleCurrency の間でデータがマップされます。
例
DFX_Textを参照してください。
要件
ヘッダー: afxdao.h
DFX_DateTime
CDaoRecordset オブジェクトのフィールド データ メンバーとデータ ソース上のレコードの列の間で、時刻と日付のデータを転送します。
構文
void AFXAPI DFX_DateTime(
CDaoFieldExchange* pFX,
LPCTSTR szName,
COleDateTime& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
パラメーター
pFX
クラス CDaoFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 この関数は、 COleDateTime オブジェクトへの参照を受け取ります。 レコードセットからデータ ソースへの転送の場合、この値は指定されたデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
dwBindOptions
MFC のダブル バッファリング メカニズムを利用して、変更されたレコードセット フィールドを検出できるオプション。 既定のAFX_DAO_ENABLE_FIELD_CACHEでは、ダブル バッファリングが使用されます。 その他の使用可能な値はAFX_DAO_DISABLE_FIELD_CACHE。 この値を指定した場合、MFC はこのフィールドをチェックしません。 SetFieldDirty
を呼び出し、自分でSetFieldNull
する必要があります。
Note
CDaoRecordset::m_bCheckCacheForDirtyFields を設定することで、データが既定でダブル バッファリングされるかどうかを制御できます。
解説
DAO の型DAO_DATEとレコードセット内の型 COleDateTime の間でデータがマップされます。
Note
COleDateTime
は、DAO クラスでこの目的 CTime とTIMESTAMP_STRUCTを置き換えます。 CTime
とTIMESTAMP_STRUCTは、ODBC ベースのデータ アクセス クラスに引き続き使用されます。
例
DFX_Textを参照してください。
要件
ヘッダー: afxdao.h
DFX_Double
CDaoRecordset オブジェクトのフィールド データ メンバーとデータ ソース上のレコードの列の間で浮動小数点型のデータを転送します。
構文
void AFXAPI DFX_Double(
CDaoFieldExchange* pFX,
LPCTSTR szName,
double& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
パラメーター
pFX
クラス CDaoFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 double
型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
dwBindOptions
MFC のダブル バッファリング メカニズムを利用して、変更されたレコードセット フィールドを検出できるオプション。 既定のAFX_DAO_ENABLE_FIELD_CACHEでは、ダブル バッファリングが使用されます。 その他の使用可能な値はAFX_DAO_DISABLE_FIELD_CACHE。 この値を指定した場合、MFC はこのフィールドをチェックしません。 SetFieldDirty
を呼び出し、自分でSetFieldNull
する必要があります。
Note
CDaoRecordset::m_bCheckCacheForDirtyFields を設定することで、データが既定でダブル バッファリングされるかどうかを制御できます。
解説
DAO の型DAO_R8とレコードセット内の 浮動小数点型 の間でデータがマップされます。
例
DFX_Textを参照してください。
要件
ヘッダー: afxdao.h
DFX_Long
CDaoRecordset オブジェクトのフィールド データ メンバーとデータ ソース上のレコードの列の間で、長整数データを転送します。
構文
void AFXAPI DFX_Long(
CDaoFieldExchange* pFX,
LPCTSTR szName,
long& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
パラメーター
pFX
クラス CDaoFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 long
型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
dwBindOptions
MFC のダブル バッファリング メカニズムを利用して、変更されたレコードセット フィールドを検出できるオプション。 既定のAFX_DAO_ENABLE_FIELD_CACHEでは、ダブル バッファリングが使用されます。 その他の使用可能な値はAFX_DAO_DISABLE_FIELD_CACHE。 この値を指定した場合、MFC はこのフィールドをチェックしません。 SetFieldDirty
を呼び出し、自分でSetFieldNull
する必要があります。
Note
CDaoRecordset::m_bCheckCacheForDirtyFields を設定することで、データが既定でダブル バッファリングされるかどうかを制御できます。
解説
DAO の型DAO_I4とレコードセット内の型 long
の間でデータがマップされます。
例
DFX_Textを参照してください。
要件
ヘッダー: afxdao.h
DFX_LongBinary
重要 この関数の代わりに DFX_Binary を使用することをお勧めします。
構文
void AFXAPI DFX_LongBinary(
CDaoFieldExchange* pFX,
LPCTSTR szName,
CLongBinary& value,
DWORD dwPreAllocSize = AFX_DAO_LONGBINARY_DEFAULT_SIZE,
DWORD dwBindOptions = 0);
パラメーター
pFX
クラス CDaoFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 CLongBinary 型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
dwPreAllocSize
フレームワークは、この量のメモリを事前に割り当て済みにします。 データが大きい場合、フレームワークは必要に応じてより多くの領域を割り当てられます。 パフォーマンスを向上させるには、このサイズを、再割り当てを防ぐのに十分な大きさの値に設定します。
dwBindOptions
MFC のダブル バッファリング メカニズムを利用して、変更されたレコードセット フィールドを検出できるオプション。 既定の AFX_DISABLE_FIELD_CACHE では、二重バッファリングは使用されません。 その他の使用可能な値はAFX_DAO_ENABLE_FIELD_CACHE。 二重バッファリングを使用します。フィールドをダーティまたは Null にマークするために余分な作業を行う必要はありません。 パフォーマンスとメモリの理由から、バイナリ データが比較的小さい場合を除き、この値は避けてください。
Note
CDaoRecordset::m_bCheckCacheForDirtyFields を設定することで、データが既定でダブル バッファリングされるかどうかを制御できます。
解説
DFX_LongBinary
は、MFC ODBC クラスとの互換性のために用意されています。 DFX_LongBinary
関数は、CDaoRecordset オブジェクトのフィールド データ メンバーとデータ ソース上のレコードの列の間で、クラス CLongBinary
を使用してバイナリ ラージ オブジェクト (BLOB) データを転送します。 DAO の型DAO_BYTESとレコードセット内の型 CLongBinary の間でデータがマップされます。
例
DFX_Textを参照してください。
要件
ヘッダー: afxdao.h
DFX_Short
CDaoRecordset オブジェクトのフィールド データ メンバーとデータ ソース上のレコードの列の間で短整数データを転送します。
構文
void AFXAPI DFX_Short(
CDaoFieldExchange* pFX,
LPCTSTR szName,
short& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
パラメーター
pFX
クラス CDaoFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 short
型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
dwBindOptions
MFC のダブル バッファリング メカニズムを利用して、変更されたレコードセット フィールドを検出できるオプション。 既定のAFX_DAO_ENABLE_FIELD_CACHEでは、ダブル バッファリングが使用されます。 その他の使用可能な値はAFX_DAO_DISABLE_FIELD_CACHE。 この値を指定した場合、MFC はこのフィールドをチェックしません。 SetFieldDirty
を呼び出し、自分でSetFieldNull
する必要があります。
Note
CDaoRecordset::m_bCheckCacheForDirtyFields を設定することで、データが既定でダブル バッファリングされるかどうかを制御できます。
解説
DAO の型DAO_I2とレコードセット内の型 short
の間でデータがマップされます。
Note
DFX_Short
は、ODBC ベースのクラスの RFX_Int と同じです。
例
DFX_Textを参照してください。
要件
ヘッダー: afxdao.h
DFX_Single
CDaoRecordset オブジェクトのフィールド データ メンバーとデータ ソース上のレコードの列の間で浮動小数点データを転送します。
構文
void AFXAPI DFX_Single(
CDaoFieldExchange* pFX,
LPCTSTR szName,
float& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
パラメーター
pFX
クラス CDaoFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 float
型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
dwBindOptions
MFC のダブル バッファリング メカニズムを利用して、変更されたレコードセット フィールドを検出できるオプション。 既定のAFX_DAO_ENABLE_FIELD_CACHEでは、ダブル バッファリングが使用されます。 その他の使用可能な値はAFX_DAO_DISABLE_FIELD_CACHE。 この値を指定した場合、MFC はこのフィールドをチェックしません。 SetFieldDirty
を呼び出し、自分でSetFieldNull
する必要があります。
Note
CDaoRecordset::m_bCheckCacheForDirtyFields を設定することで、データが既定でダブル バッファリングされるかどうかを制御できます。
解説
DAO の型DAO_R4とレコードセット内の型 float
の間でデータがマップされます。
例
DFX_Textを参照してください。
要件
ヘッダー: afxdao.h
DFX_Text
CDaoRecordset オブジェクトのフィールド データ メンバーとデータ ソース上のレコードの列の間でCString
データを転送します。
構文
void AFXAPI DFX_Text(
CDaoFieldExchange* pFX,
LPCTSTR szName,
CString& value,
int nPreAllocSize = AFX_DAO_TEXT_DEFAULT_SIZE,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
パラメーター
pFX
クラス CDaoFieldExchange のオブジェクトへのポインター。 このオブジェクトには、関数の各呼び出しのコンテキストを定義するための情報が含まれています。
szName
データ列の名前。
value
指定されたデータ メンバー (転送される値) に格納されている値。 レコードセットからデータ ソースへの転送の場合、 CString 型の値は、指定したデータ メンバーから取得されます。 データ ソースからレコードセットへの転送の場合、値は指定されたデータ メンバーに格納されます。
nPreAllocSize
フレームワークは、この量のメモリを事前に割り当て済みにします。 データが大きい場合、フレームワークは必要に応じてより多くの領域を割り当てられます。 パフォーマンスを向上させるには、このサイズを、再割り当てを防ぐのに十分な大きさの値に設定します。
dwBindOptions
MFC のダブル バッファリング メカニズムを利用して、変更されたレコードセット フィールドを検出できるオプション。 既定のAFX_DAO_ENABLE_FIELD_CACHEでは、ダブル バッファリングが使用されます。 その他の使用可能な値はAFX_DAO_DISABLE_FIELD_CACHE。 この値を指定した場合、MFC はこのフィールドをチェックしません。 SetFieldDirty を呼び出しSetFieldNullする必要があります。
Note
CDaoRecordset::m_bCheckCacheForDirtyFields を設定することで、データが既定でダブル バッファリングされるかどうかを制御できます。
解説
データは DAO の型DAO_CHAR (または、シンボル_UNICODEが定義されている場合はDAO_WCHAR) とレコードセット内の CString 型の間でマップされます。 n
例
この例では、 DFX_Text
に対するいくつかの呼び出しを示します。 また、 CDaoFieldExchange::SetFieldType の 2 つの呼び出しにも注意してください。 SetFieldType
とそのDFX呼び出しへの最初の呼び出しを記述する必要があります。 2 番目の呼び出しとそれに関連付けられた DFX 呼び出しは、通常、クラスを生成したコード ウィザードによって記述されます。
void CCustSet::DoFieldExchange(CDaoFieldExchange* pFX)
{
pFX->SetFieldType(CDaoFieldExchange::param);
DFX_Text(pFX, _T("Param"), m_strParam);
pFX->SetFieldType(CDaoFieldExchange::outputColumn);
DFX_Short(pFX, _T("EmployeeID"), m_EmployeeID);
DFX_Text(pFX, _T("LastName"), m_LastName);
DFX_Short(pFX, _T("Age"), m_Age);
DFX_DateTime(pFX, _T("hire_date"), m_hire_date);
DFX_DateTime(pFX, _T("termination_date"), m_termination_date);
CDaoRecordset::DoFieldExchange(pFX);
}
要件
ヘッダー: afxdao.h
関連項目
マクロとグローバル
CRecordset::DoFieldExchange
CRecordset::D oBulkFieldExchange
CDaoRecordset::D oFieldExchange