COleDBRecordView クラス
コントロール内にデータベース レコードを表示するビューです。
構文
class COleDBRecordView : public CFormView
メンバー
保護されたコンストラクター
名前 | 説明 |
---|---|
COleDBRecordView::COleDBRecordView | COleDBRecordView オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
COleDBRecordView::OnGetRowset | 標準の HRESULT 値を返します。 |
COleDBRecordView::OnMove | データ ソースの現在のレコード (ダーティの場合) を更新し、指定したレコード (次、前、先頭、または最後) に移動します。 |
解説
ビューは、 CRowset
オブジェクトに直接接続されたフォーム ビューです。 ビューはダイアログ テンプレート リソースから作成され、ダイアログ テンプレートのコントロールに CRowset
オブジェクトのフィールドが表示されます。 COleDBRecordView
オブジェクトは、ダイアログ データ交換 (DDX) と、CRowset
に組み込まれているナビゲーション機能を使用して、フォーム上のコントロールと行セットのフィールド間のデータ移動を自動化します。 COleDBRecordView
また、最初、次、前、または最後のレコードに移動するための既定の実装と、現在表示されているレコードを更新するためのインターフェイスも提供します。
DDX 関数を COleDbRecordView
と共に使用すると、データベース レコードセットから直接データを取得し、それをダイアログ コントロールに表示できます。 COleDbRecordView
でDDX_Field*
関数 (DDX_FieldText
など) ではなく、DDX_*
メソッド (DDX_Text
など) を使用する必要があります。 DDX_FieldText
は COleDbRecordView
では機能しません。これは、 DDX_FieldText
が CRecordset*
型 ( CRecordView
の場合) または CDaoRecordset*
( CDaoRecordView
の場合) の追加の引数を受け取るためです。
Note
OLE DB コンシューマー テンプレート クラスではなく、データ アクセス オブジェクト (DAO) クラスを使用する場合は、代わりにクラス CDaoRecordView を使用します。 詳細については、「 Overview: データベース プログラミング」を参照してください。
COleDBRecordView
は、レコード ビューがユーザー インターフェイスを更新できるように、行セット内のユーザーの位置を追跡します。 ユーザーが行セットの末尾に移動すると、レコード ビューは、メニュー項目やツール バー ボタンなどのユーザー インターフェイス オブジェクトを無効にして、同じ方向に移動します。
行セット クラスの詳細については、「 OLE DB コンシューマー テンプレートの使用 」を参照してください。
継承階層
COleDBRecordView
要件
Header: afxoledb.h
COleDBRecordView::COleDBRecordView
COleDBRecordView
オブジェクトを構築します。
COleDBRecordView(LPCTSTR lpszTemplateName);
COleDBRecordView(UINT nIDTemplate);
パラメーター
lpszTemplateName
ダイアログ テンプレート リソースの名前である null で終わる文字列を格納します。
nIDTemplate
ダイアログ テンプレート リソースの ID 番号を格納します。
解説
COleDBRecordView
から派生した型のオブジェクトを作成する場合は、いずれかのコンストラクターを呼び出してビュー オブジェクトを作成し、ビューの基になるダイアログ リソースを識別します。 リソースは、名前 (コンストラクターに引数として文字列を渡す) または ID (引数として符号なし整数を渡す) で識別できます。
Note
派生クラス must 独自のコンストラクターを提供します。 コンストラクターで、リソース名または ID を引数として使用して、 COleDBRecordView::COleDBRecordView
コンストラクターを呼び出します。
COleDBRecordView::OnGetRowset
レコード ビューに関連付けられた CRowset<> オブジェクトのハンドルを返します。
virtual CRowset<>* OnGetRowset() = 0;
戻り値
標準の HRESULT 値。
解説
行セット オブジェクトを構築または取得してハンドルを返すには、このメンバー関数をオーバーライドする必要があります。 ClassWizard でレコード ビュー クラスを宣言すると、ウィザードによって既定のオーバーライドが書き込まれます。 ClassWizard の既定の実装では、レコード ビューに格納されている行セット ハンドル (存在する場合) が返されます。 そうでない場合は、ClassWizard で指定した型の行セット オブジェクトを構築し、その Open
メンバー関数を呼び出してテーブルを開くかクエリを実行し、オブジェクトにハンドルを返します。
Note
MFC 7.0 より前の OnGetRowset
は、 CRowset
へのポインターを返しました。 OnGetRowset
を呼び出すコードがある場合は、戻り値の型をテンプレート化されたクラス CRowset<>に変更する必要があります。
例
CFrameWnd* pFrame = (CFrameWnd*)AfxGetMainWnd();
COleDBRecordView* pView = (COleDBRecordView*)pFrame->GetActiveView();
// CProductAccessor is a user-defined accessor class
CRowset<CAccessor<CProductAccessor>>* pRowSet =
(CRowset<CAccessor<CProductAccessor>>*)pView->OnGetRowset();
詳細と例については、「レコード ビュー: レコード ビューの使用」を参照してください。
COleDBRecordView::OnMove
行セット内の別のレコードに移動し、そのフィールドをレコード ビューのコントロールに表示します。
virtual BOOL OnMove(UINT nIDMoveCommand);
パラメーター
nIDMoveCommand
次のいずれかの標準コマンド ID 値。
ID_RECORD_FIRST — レコードセットの最初のレコードに移動します。
ID_RECORD_LAST — レコードセット内の最後のレコードに移動します。
ID_RECORD_NEXT — レコードセット内の次のレコードに移動します。
ID_RECORD_PREV — レコードセット内の前のレコードに移動します。
戻り値
移動が成功した場合は 0 以外。それ以外の場合は、移動要求が拒否された場合は 0。
解説
既定の実装では、レコード ビューに関連付けられているCRowset
オブジェクトの適切なMove
メンバー関数を呼び出します。
既定では、 OnMove
は、ユーザーがレコード ビューで変更した場合に、データ ソースの現在のレコードを更新します。
アプリケーション ウィザードでは、最初のレコード、最後のレコード、次のレコード、および前のレコードのメニュー項目を含むメニュー リソースが作成されます。 [ドッキング可能なツール バー] オプションを選択した場合、アプリケーション ウィザードでは、これらのコマンドに対応するボタンを含むツール バーも作成されます。
レコードセット内の最後のレコードを超えて移動すると、レコード ビューには最後のレコードが引き続き表示されます。 最初のレコードを前に戻すと、レコード ビューに最初のレコードが引き続き表示されます。