コントロール内にデータベース レコードを表示するビューです。
構文
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 は、ユーザーがレコード ビューで変更した場合に、データ ソースの現在のレコードを更新します。
アプリケーション ウィザードでは、最初のレコード、最後のレコード、次のレコード、および前のレコードのメニュー項目を含むメニュー リソースが作成されます。 [ドッキング可能なツール バー] オプションを選択した場合、アプリケーション ウィザードでは、これらのコマンドに対応するボタンを含むツール バーも作成されます。
レコードセット内の最後のレコードを超えて移動すると、レコード ビューには最後のレコードが引き続き表示されます。 最初のレコードを前に戻すと、レコード ビューに最初のレコードが引き続き表示されます。