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
レコード ビューがユーザー インターフェイスを更新できるように、レコードセット内のユーザーの位置を追跡します。 ユーザーがレコードセットの末尾に移動すると、レコード ビューでは、メニュー項目やツール バー ボタンなどのユーザー インターフェイス オブジェクトが無効にされ、同じ方向に移動します。
レコード ビューおよびレコード セット クラスの宣言と使用の詳細については、「レコード ビュー」の「レコード ビューのデザインと作成」 を参照してください。 レコード ビューの動作と使用方法の詳細については、レコード ビューの使用に関する記事を参照してください。
継承階層
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::IDD
をenum
定義し、クラス宣言で値を指定し、コンストラクターのメンバー初期化リストで使用します。
例
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
は例外をスローします。 対応する移動操作の前に、適切なユーザー インターフェイス更新ハンドラー関数 OnUpdateRecordFirst
OnUpdateRecordLast
(、、OnUpdateRecordNext
またはOnUpdateRecordPrev
) を呼び出して、レコードセットにレコードがあるかどうかを判断します。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示