Share via


CDaoRecordView クラス

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

構文

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

レコード間を移動するための既定の実装の詳細については、レコード ビューの使用に関する記事を参照してくださいIsOnLastRecordIsOnFirstRecord。この方法は、レコード ビューとCDaoRecordViewレコード ビューの両方CRecordViewに適用されます。

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::UpdateData, 呼び出し CWnd::DoDataExchange. この最初の 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

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

virtual CDaoRecordset* OnGetRecordset() = 0;

戻り値

オブジェクトが CDaoRecordset正常に作成された場合は -derived オブジェクトへのポインター。それ以外の場合は 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 は例外をスローします。 対応する移動操作の前に、適切なユーザー インターフェイス更新ハンドラー関数 OnUpdateRecordFirstOnUpdateRecordLast(、、OnUpdateRecordNextまたはOnUpdateRecordPrev) を呼び出して、レコードセットにレコードがあるかどうかを判断します。

関連項目

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