CDaoRecordView クラス
コントロール内にデータベース レコードを表示するビューです。
Note
DAO は、Office 2013 でサポートされています。 DAO 3.6 は最終バージョンであり、古いと見なされます。
構文
class AFX_NOVTABLE CDaoRecordView : public CFormView
メンバー
保護されたコンストラクター
名前 | 説明 |
---|---|
CDaoRecordView::CDaoRecordView | CDaoRecordView オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CDaoRecordView::IsOnFirstRecord | 現在のレコードが関連付けられているレコードセットの最初のレコードである場合は、0 以外の値を返します。 |
CDaoRecordView::IsOnLastRecord | 現在のレコードが関連付けられているレコードセットの最後のレコードである場合は、0 以外の値を返します。 |
CDaoRecordView::OnGetRecordset | CDaoRecordset から派生したクラスのオブジェクトへのポインターを返します。 ClassWizard によってこの関数がオーバーライドされ、必要に応じてレコードセットが作成されます。 |
CDaoRecordView::OnMove | 現在のレコードが変更された場合は、データ ソースでレコードを更新し、指定したレコード (次、前、先頭、または最後) に移動します。 |
解説
ビューは、 CDaoRecordset
オブジェクトに直接接続されたフォーム ビューです。 ビューはダイアログ テンプレート リソースから作成され、ダイアログ テンプレートのコントロールに CDaoRecordset
オブジェクトのフィールドが表示されます。 CDaoRecordView
オブジェクトは、ダイアログ データ交換 (DDX) と DAO レコード フィールド交換 (DFX) を使用して、フォーム上のコントロールとレコードセットのフィールド間のデータの移動を自動化します。 CDaoRecordView
また、最初、次、前、または最後のレコードに移動するための既定の実装と、現在表示されているレコードを更新するためのインターフェイスも提供します。
Note
DAO データベース クラスは、Open Database Connectivity (ODBC) に基づく MFC データベース クラスとは異なります。 すべての DAO データベース クラス名には、"CDao" プレフィックスがあります。 DAO クラスを使用して ODBC データ ソースに引き続きアクセスできます。DAO クラスは、Microsoft Jet データベース エンジンを使用するため、一般に優れた機能を提供します。
レコード ビューを作成する最も一般的な方法は、アプリケーション ウィザードを使用することです。 アプリケーション ウィザードでは、スケルトン スターター アプリケーションの一部として、レコード ビュー クラスとそれに関連付けられているレコード セット クラスの両方が作成されます。
単一のフォームが必要な場合は、アプリケーション ウィザードのアプローチが簡単です。 ClassWizard を使用すると、開発プロセスの後半でレコード ビューを使用することができます。 アプリケーション ウィザードでレコード ビュー クラスを作成しない場合は、後で ClassWizard で作成できます。 ClassWizard を使用してレコード ビューとレコードセットを個別に作成し、それらを接続するのが最も柔軟なアプローチです。レコードセット クラスとその名前を指定する際の制御が強化されます。H/.CPP ファイル。 この方法では、同じレコード セット クラスに複数のレコード ビューを設定することもできます。
エンド ユーザーがレコード ビューでレコードからレコードに簡単に移動できるように、アプリケーション ウィザードは、最初、次、前、または最後のレコードに移動するためのメニュー (および必要に応じてツール バー) リソースを作成します。 ClassWizard でレコード ビュー クラスを作成する場合は、メニュー エディターとビットマップ エディターを使用してこれらのリソースを自分で作成する必要があります。
レコード間の移動に関する既定の実装については、「IsOnFirstRecord
とIsOnLastRecord
」および 「CRecordView
とCDaoRecordView
の両方に適用されるレコード ビューの使用」を参照してください。
CDaoRecordView
レコード ビューがユーザー インターフェイスを更新できるように、レコードセット内のユーザーの位置を追跡します。 ユーザーがレコードセットの末尾に移動すると、レコード ビューでは、メニュー項目やツール バー ボタンなどのユーザー インターフェイス オブジェクトが無効にされ、同じ方向に移動します。
レコード ビューおよびレコード セット クラスの宣言と使用の詳細については、「レコード ビューのデザインと作成」を参照してください レコード ビュー。 レコード ビューのしくみとその使用方法の詳細については、「 レコード ビューの使用」を参照してください。 上記のすべての記事は、 CRecordView
と CDaoRecordView
の両方に適用されます。
継承階層
CDaoRecordView
要件
ヘッダー: afxdao.h
CDaoRecordView::CDaoRecordView
CDaoRecordView
から派生した型のオブジェクトを作成する場合は、いずれかの形式のコンストラクターを呼び出してビュー オブジェクトを初期化し、ビューの基になるダイアログ リソースを識別します。
explicit CDaoRecordView(LPCTSTR lpszTemplateName);
explicit CDaoRecordView(UINT nIDTemplate);
パラメーター
lpszTemplateName
ダイアログ テンプレート リソースの名前である null で終わる文字列を格納します。
nIDTemplate
ダイアログ テンプレート リソースの ID 番号を格納します。
解説
リソースは、名前 (コンストラクターに引数として文字列を渡す) または ID (引数として符号なし整数を渡す) で識別できます。 リソース ID を使用することをお勧めします。
Note
派生クラスは、独自のコンストラクターを指定する必要があります。 派生クラスのコンストラクターで、リソース名または ID を引数として CDaoRecordView::CDaoRecordView
コンストラクターを呼び出します。
CDaoRecordView::OnInitialUpdate
は、CWnd::DoDataExchange
を呼び出すCWnd::UpdateData
を呼び出します。 DoDataExchange
へのこの最初の呼び出しは、CDaoRecordView
コントロールを (間接的に) ClassWizard によって作成されたフィールド データ メンバーCDaoRecordset
接続します。 これらのデータ メンバーは、基底クラス CFormView::OnInitialUpdate
メンバー関数を呼び出すまで使用できません。
Note
ClassWizard を使用する場合、ウィザードはクラス宣言でCDaoRecordView::IDD
enum
値を定義し、コンストラクターのメンバー初期化リストで使用します。
CMyDaoRecordView::CMyDaoRecordView()
: CDaoRecordView(CMyDaoRecordView::IDD)
{
m_pSet = NULL;
// TODO: add construction code here
}
CDaoRecordView::IsOnFirstRecord
このメンバー関数を呼び出して、現在のレコードがこのレコード ビューに関連付けられているレコード セット オブジェクトの最初のレコードであるかどうかを判断します。
BOOL IsOnFirstRecord();
戻り値
現在のレコードがレコードセットの最初のレコードの場合は 0 以外。それ以外の場合は 0。
解説
この関数は、ClassWizard によって記述された既定のコマンド更新ハンドラーの独自の実装を記述する場合に便利です。
ユーザーが最初のレコードに移動すると、フレームワークは、最初または前のレコードに移動するために持っているユーザー インターフェイス オブジェクト (メニュー項目やツール バー ボタンなど) を無効にします。
CDaoRecordView::IsOnLastRecord
このメンバー関数を呼び出して、現在のレコードがこのレコード ビューに関連付けられているレコードセット オブジェクトの最後のレコードであるかどうかを判断します。
BOOL IsOnLastRecord();
戻り値
現在のレコードがレコードセットの最後のレコードの場合は 0 以外。それ以外の場合は 0。
解説
この関数は、ClassWizard がレコードからレコードに移動するためのユーザー インターフェイスをサポートするために書き込む既定のコマンド更新ハンドラーの独自の実装を記述する場合に便利です。
注意事項
この関数の結果は信頼性が高くなりますが、ユーザーがレコードセットを越えて移動するまで、ビューでレコードセットの末尾を検出できない場合があります。 ユーザーは、レコード ビューが次のレコードまたは最後のレコードに移動するためにユーザー インターフェイス オブジェクトを無効にする必要があることを示す前に、最後のレコードを超える移動が必要になる場合があります。 ユーザーが最後のレコードを越えて最後のレコード (またはレコードの前) に戻った場合、レコード ビューはレコードセット内のユーザーの位置を追跡し、ユーザー インターフェイス オブジェクトを正しく無効にすることができます。
CDaoRecordView::OnGetRecordset
レコード ビューに関連付けられている CDaoRecordset
派生オブジェクトへのポインターを返します。
virtual CDaoRecordset* OnGetRecordset() = 0;
戻り値
オブジェクトが正常に作成された場合は CDaoRecordset
派生オブジェクトへのポインター。それ以外の場合は NULL ポインター。
解説
レコードセット オブジェクトを構築または取得し、そのオブジェクトへのポインターを返すには、このメンバー関数をオーバーライドする必要があります。 ClassWizard でレコード ビュー クラスを宣言すると、ウィザードによって既定のオーバーライドが書き込まれます。 ClassWizard の既定の実装では、レコード ビューに格納されているレコード セット ポインター (存在する場合) が返されます。 存在しない場合は、ClassWizard で指定した型のレコードセット オブジェクトを構築し、その Open
メンバー関数を呼び出してテーブルを開くかクエリを実行し、オブジェクトへのポインターを返します。
詳細と例については、「レコード ビュー: レコード ビューの使用」を参照してください。
CDaoRecordView::OnMove
レコードセット内の別のレコードに移動し、レコード ビューのコントロールにそのフィールドを表示するには、このメンバー関数を呼び出します。
virtual BOOL OnMove(UINT nIDMoveCommand);
パラメーター
nIDMoveCommand
次のいずれかの標準コマンド ID 値。
ID_RECORD_FIRST レコードセットの最初のレコードに移動します。
ID_RECORD_LAST レコードセット内の最後のレコードに移動します。
ID_RECORD_NEXT レコードセット内の次のレコードに移動します。
ID_RECORD_PREV レコードセット内の前のレコードに移動します。
戻り値
移動が成功した場合は 0 以外。それ以外の場合は、移動要求が拒否された場合は 0。
解説
既定の実装では、レコード ビューに関連付けられている CDaoRecordset
オブジェクトの適切な Move メンバー関数を呼び出します。
既定では、 OnMove
は、ユーザーがレコード ビューで変更した場合に、データ ソースの現在のレコードを更新します。
アプリケーション ウィザードでは、最初のレコード、最後のレコード、次のレコード、および前のレコードのメニュー項目を含むメニュー リソースが作成されます。 [初期ツール バー] オプションを選択した場合、アプリケーション ウィザードでは、これらのコマンドに対応するボタンを含むツール バーも作成されます。
レコードセット内の最後のレコードを超えて移動すると、レコード ビューには最後のレコードが引き続き表示されます。 最初のレコードを前に戻すと、レコード ビューに最初のレコードが引き続き表示されます。
注意事項
レコードセットにレコードがない場合、 OnMove
を呼び出すと例外がスローされます。 対応する移動操作の前に、適切なユーザー インターフェイス更新ハンドラー関数 ( OnUpdateRecordFirst
、 OnUpdateRecordLast
、 OnUpdateRecordNext
、または OnUpdateRecordPrev
) を呼び出して、レコードセットにレコードがあるかどうかを判断します。
関連項目
CFormView クラス
階層図
CDaoRecordset クラス
CDaoTableDef クラス
CDaoQueryDef クラス
CDaoDatabase クラス
CDaoWorkspace クラス
CFormView クラス