CRecordView クラス

コントロール内にデータベース レコードを表示するビューです。

構文

class AFX_NOVTABLE CRecordView : public CFormView

メンバー

保護されたコンストラクター

名前 説明
CRecordView::CRecordView CRecordView オブジェクトを構築します。

パブリック メソッド

名前 説明
CRecordView::IsOnFirstRecord 現在のレコードが関連付けられているレコードセットの最初のレコードである場合は、0 以外の値を返します。
CRecordView::IsOnLastRecord 現在のレコードが関連付けられているレコードセットの最後のレコードである場合は、0 以外の値を返します。
CRecordView::OnGetRecordset から CRecordset派生したクラスのオブジェクトへのポインターを返します。 ClassWizard によってこの関数がオーバーライドされ、必要に応じてレコードセットが作成されます。
CRecordView::OnMove

保護メソッド

名前 説明
CRecordView::OnMove 現在のレコードが変更された場合は、データ ソースでレコードを更新し、指定したレコード (次、前、先頭、または最後) に移動します。

解説

ビューは、オブジェクトに直接接続されたフォーム ビューです CRecordset 。 ビューはダイアログ テンプレート リソースから作成され、ダイアログ テンプレートの CRecordset コントロールにオブジェクトのフィールドが表示されます。 オブジェクトは CRecordView 、ダイアログ データ交換 (DDX) とレコード フィールド交換 (RFX) を使用して、フォーム上のコントロールとレコードセットのフィールド間のデータの移動を自動化します。 CRecordView また、最初、次、前、または最後のレコードに移動するための既定の実装と、現在表示されているレコードを更新するためのインターフェイスも提供します。

Note

Open Database Connectivity (ODBC) クラスではなく、データ アクセス オブジェクト (DAO) クラスを使用する場合は、代わりに CDaoRecordView クラスを使用します。 詳細については、「概要: データベース プログラミング」を参照してください。

レコード ビューを作成する最も一般的な方法は、アプリケーション ウィザードを使用することです。 アプリケーション ウィザードでは、スケルトン スターター アプリケーションの一部として、レコード ビュー クラスとそれに関連付けられているレコード セット クラスの両方が作成されます。 アプリケーション ウィザードでレコード ビュー クラスを作成しない場合は、後で ClassWizard で作成できます。 単一のフォームが必要な場合は、アプリケーション ウィザードのアプローチが簡単です。 ClassWizard を使用すると、開発プロセスの後半でレコード ビューを使用することができます。 ClassWizard を使用してレコード ビューとレコードセットを個別に作成し、それらを接続するのが最も柔軟なアプローチです。レコードセット クラスとその名前を指定する際の制御が強化されます。H/。CPP ファイル。 この方法では、同じレコード セット クラスに複数のレコード ビューを設定することもできます。

エンド ユーザーがレコード ビューでレコードからレコードに簡単に移動できるように、アプリケーション ウィザードは、最初、次、前、または最後のレコードに移動するためのメニュー (および必要に応じてツール バー) リソースを作成します。 ClassWizard でレコード ビュー クラスを作成する場合は、メニュー エディターとビットマップ エディターを使用してこれらのリソースを自分で作成する必要があります。

レコードからレコードへの移動の既定の実装については、レコード ビューの使用に関する記事とIsOnLastRecord記事を参照してくださいIsOnFirstRecord

CRecordView レコード ビューがユーザー インターフェイスを更新できるように、レコードセット内のユーザーの位置を追跡します。 ユーザーがレコードセットの末尾に移動すると、レコード ビューでは、メニュー項目やツール バー ボタンなどのユーザー インターフェイス オブジェクトが無効にされ、同じ方向に移動します。

レコード ビューおよびレコード セット クラスの宣言と使用の詳細については、「レコード ビュー」の「レコード ビューのデザインと作成」 を参照してください。 レコード ビューの動作と使用方法の詳細については、レコード ビューの使用に関する記事を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CView

CScrollView

CFormView

CRecordView

必要条件

ヘッダー: afxdb.h

CRecordView::CRecordView

派生 CRecordViewした型のオブジェクトを作成する場合は、いずれかの形式のコンストラクターを呼び出してビュー オブジェクトを初期化し、ビューの基になるダイアログ リソースを識別します。

explicit CRecordView(LPCTSTR lpszTemplateName);
explicit CRecordView(UINT nIDTemplate);

パラメーター

lpszTemplateName
ダイアログ テンプレート リソースの名前である null で終わる文字列を格納します。

nIDTemplate
ダイアログ テンプレート リソースの ID 番号を格納します。

解説

リソースは、名前 (コンストラクターに引数として文字列を渡す) または ID (引数として符号なし整数を渡す) で識別できます。 リソース ID を使用することをお勧めします。

Note

派生クラス は、独自のコンストラクターを指定する必要があります 。 次の例に示すように、派生クラスのコンストラクターで、リソース名または ID を引数として使用してコンストラクターを呼び出します CRecordView::CRecordView

CRecordView::OnInitialUpdate 呼び出し UpdateData, 呼び出し DoDataExchange. この最初の DoDataExchange 呼び出しは、 CRecordView ClassWizard によって作成されたフィールド データ メンバーに CRecordset コントロールを (間接的に) 接続します。 これらのデータ メンバーは、基底クラス CFormView::OnInitialUpdate メンバー関数を呼び出すまで使用できません。

Note

ClassWizard を使用する場合、ウィザードは値CRecordView::IDDenum定義し、クラス宣言で値を指定し、コンストラクターのメンバー初期化リストで使用します。

CMyRecordView::CMyRecordView()
   : CRecordView(CMyRecordView::IDD)
{
   m_pSet = NULL;
   // TODO: add construction code here

}

CRecordView::IsOnFirstRecord

このメンバー関数を呼び出して、現在のレコードがこのレコード ビューに関連付けられているレコード セット オブジェクトの最初のレコードであるかどうかを判断します。

BOOL IsOnFirstRecord();

戻り値

現在のレコードがレコードセットの最初のレコードの場合は 0 以外。それ以外の場合は 0。

解説

この関数は、ClassWizard によって記述された既定のコマンド更新ハンドラーの独自の実装を記述する場合に便利です。

ユーザーが最初のレコードに移動した場合、フレームワークは、最初または前のレコードに移動するために持っているすべてのユーザー インターフェイス オブジェクトを無効にします。

CRecordView::IsOnLastRecord

このメンバー関数を呼び出して、現在のレコードがこのレコード ビューに関連付けられているレコードセット オブジェクトの最後のレコードであるかどうかを判断します。

BOOL IsOnLastRecord();

戻り値

現在のレコードがレコードセットの最後のレコードの場合は 0 以外。それ以外の場合は 0。

解説

この関数は、ClassWizard がレコードからレコードに移動するためのユーザー インターフェイスをサポートするために書き込む既定のコマンド更新ハンドラーの独自の実装を記述する場合に便利です。

注意事項

この関数の結果は信頼性が高くなりますが、ユーザーがレコードセットを越えて移動するまで、ビューでレコードセットの末尾を検出できない点が異なります。 ユーザーは、レコード ビューが次のレコードまたは最後のレコードに移動するためにユーザー インターフェイス オブジェクトを無効にする必要があることを示す前に、最後のレコードを超えて移動する必要があります。 ユーザーが最後のレコードを越えて最後のレコード (またはレコードの前) に戻った場合、レコード ビューはレコードセット内のユーザーの位置を追跡し、ユーザー インターフェイス オブジェクトを正しく無効にすることができます。 IsOnLastRecordは、ID_RECORD_LAST コマンドCRecordset::MoveLastを処理する実装関数OnRecordLastの呼び出し後も信頼性が低い。

CRecordView::OnGetRecordset

レコード ビューに関連付けられている -derived オブジェクトへの CRecordsetポインターを返します。

virtual CRecordset* OnGetRecordset() = 0;

戻り値

オブジェクトが CRecordset正常に作成された場合は -derived オブジェクトへのポインター。それ以外の場合は NULL ポインター。

解説

レコードセット オブジェクトを構築または取得し、そのオブジェクトへのポインターを返すには、このメンバー関数をオーバーライドする必要があります。 ClassWizard でレコード ビュー クラスを宣言すると、ウィザードによって既定のオーバーライドが書き込まれます。 ClassWizard の既定の実装では、レコード ビューに格納されているレコード セット ポインター (存在する場合) が返されます。 存在しない場合は、ClassWizard で指定した型のレコードセット オブジェクトを構築し、そのメンバー関数を Open 呼び出してテーブルを開くかクエリを実行し、オブジェクトへのポインターを返します。

詳細と例については、「レコード ビュー: レコード ビューの使用」を 参照してください。

CRecordView::OnMove

レコードセット内の別のレコードに移動し、レコード ビューのコントロールにそのフィールドを表示するには、このメンバー関数を呼び出します。

virtual BOOL OnMove(UINT nIDMoveCommand);

パラメーター

nIDMoveCommand
次のいずれかの標準コマンド ID 値。

  • ID_RECORD_FIRST レコードセットの最初のレコードに移動します。

  • ID_RECORD_LAST レコードセット内の最後のレコードに移動します。

  • ID_RECORD_NEXT レコードセット内の次のレコードに移動します。

  • ID_RECORD_PREV レコードセット内の前のレコードに移動します。

戻り値

移動が成功した場合は 0 以外。それ以外の場合は、移動要求が拒否された場合は 0。

解説

既定の実装では、レコード ビューに関連付けられているオブジェクトのCRecordset適切なMoveメンバー関数を呼び出します。

既定では、 OnMove ユーザーがレコード ビューで変更した場合、データ ソースの現在のレコードを更新します。

アプリケーション ウィザードでは、最初のレコード、最後のレコード、次のレコード、および前のレコードのメニュー項目を含むメニュー リソースが作成されます。 [ドッキング可能なツール バー] オプションを選択した場合、アプリケーション ウィザードでは、これらのコマンドに対応するボタンを含むツール バーも作成されます。

レコードセット内の最後のレコードを超えて移動すると、レコード ビューには最後のレコードが引き続き表示されます。 最初のレコードを前に戻すと、レコード ビューに最初のレコードが引き続き表示されます。

注意事項

レコードセットにレコードがない場合、呼び出し OnMove は例外をスローします。 対応する移動操作の前に、適切なユーザー インターフェイス更新ハンドラー関数 OnUpdateRecordFirstOnUpdateRecordLast(、、OnUpdateRecordNextまたはOnUpdateRecordPrev) を呼び出して、レコードセットにレコードがあるかどうかを判断します。

関連項目

CFormView クラス
階層図
CRecordset クラス
CFormView クラス