次の方法で共有


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 でレコード ビュー クラスを作成する場合は、メニュー エディターとビットマップ エディターを使用してこれらのリソースを自分で作成する必要があります。

レコード間の移動に関する既定の実装については、「IsOnFirstRecordIsOnLastRecord」および CRecordViewCDaoRecordViewの両方に適用されるレコード ビューの使用」を参照してください。

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

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

継承階層

CObject

CCmdTarget

CWnd

CView

CScrollView

CFormView

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::IDDenum値を定義し、コンストラクターのメンバー初期化リストで使用します。

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 を呼び出すと例外がスローされます。 対応する移動操作の前に、適切なユーザー インターフェイス更新ハンドラー関数 ( OnUpdateRecordFirstOnUpdateRecordLastOnUpdateRecordNext、または OnUpdateRecordPrev ) を呼び出して、レコードセットにレコードがあるかどうかを判断します。

関連項目

CFormView クラス
階層図
CDaoRecordset クラス
CDaoTableDef クラス
CDaoQueryDef クラス
CDaoDatabase クラス
CDaoWorkspace クラス
CFormView クラス