CRecordView 類別

在控制項中顯示資料庫記錄的檢視。

語法

class AFX_NOVTABLE CRecordView : public CFormView

成員

受保護的建構函式

名稱 描述
CRecordView::CRecordView 建構 CRecordView 物件。

公用方法

名稱 描述
CRecordView::IsOnFirstRecord 如果目前記錄是相關聯記錄集中的第一筆記錄,則傳回非零。
CRecordView::IsOnLastRecord 如果當前記錄是相關聯記錄集中的最後一筆記錄,則傳回非零。
CRecordView::OnGetRecordset 傳回衍生自 CRecordset之類別物件的指標。 ClassWizard 會為您覆寫此函式,並視需要建立記錄集。
CRecordView::OnMove

受保護的方法

名稱 描述
CRecordView::OnMove 如果當前記錄已變更,請在數據源上更新它,然後移至指定的記錄(下一筆、上一筆、第一筆或最後一筆)。

備註

檢視是直接連接到 CRecordset 物件的窗體檢視。 檢視會從對話框範本資源建立,並在對話框範本的控件中顯示物件的欄位 CRecordset 。 物件 CRecordView 會使用對話資料交換 (DDX) 和記錄欄位交換 (RFX) 將表單上的控制件與記錄集欄位之間的資料移動自動化。 CRecordView 也提供預設實作,以便移至目前在檢視時更新記錄的第一筆、下一筆、上一筆或最後一筆記錄,以及更新記錄的介面。

注意

如果您使用數據存取物件 (DAO) 類別,而不是 Open Database Connectivity (ODBC) 類別,請改用 CDaoRecordView 類別。 如需詳細資訊,請參閱概觀:資料庫程序設計一文

建立記錄檢視的最常見方式是使用應用程式精靈。 應用程式精靈會建立記錄檢視類別和其相關聯的記錄集類別,作為基本架構入門應用程式的一部分。 如果您未使用 [應用程式精靈] 建立記錄檢視類別,您可以稍後使用 ClassWizard 建立記錄檢視類別。 如果您只需要單一窗體,應用程式精靈方法會比較容易。 ClassWizard 可讓您決定稍後在開發程式中使用記錄檢視。 使用 ClassWizard 個別建立記錄檢視和記錄集,然後連接它們是最有彈性的方法,因為它可讓您更控制命名記錄集類別及其 。H/.CPP 檔案。 此方法也可讓您在同一個記錄集類別上有多個記錄檢視。

為了讓終端用戶輕鬆地從記錄移至記錄檢視中的記錄,應用程式精靈會建立功能表(以及選擇性工具列)資源,以移至第一筆、下一筆、上一筆或最後一筆記錄。 如果您使用 ClassWizard 建立記錄檢視類別,則必須使用功能表和點陣圖編輯器自行建立這些資源。

如需從記錄移至記錄之預設實作的相關信息,請參閱IsOnFirstRecord和使用IsOnLastRecord記錄檢視一文和文章

CRecordView 會追蹤記錄集中使用者的位置,讓記錄檢視可以更新使用者介面。 當使用者移至記錄集的任一端時,記錄檢視會停用使用者介面物件,例如功能表項或工具列按鈕,以便以相同方向進一步移動。

如需宣告和使用記錄檢視和記錄集類別的詳細資訊,請參閱記錄檢視一文中的<設計和建立記錄檢視>。 如需記錄檢視的運作方式和使用方式的詳細資訊,請參閱使用記錄檢視一文

繼承階層架構

CObject

CCmdTarget

CWnd

CView

CScrollView

CFormView

CRecordView

需求

標頭: afxdb.h

CRecordView::CRecordView

當您建立衍生自 CRecordView的類型物件時,請呼叫任一形式的建構函式來初始化檢視物件,並識別檢視所依據的對話資源。

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

參數

lpszTemplateName
包含以 Null 結尾的字串,該字串是對話範本資源的名稱。

nIDTemplate
包含對話框範本資源的識別碼。

備註

您可以依名稱來識別資源(將字串當做自變數傳遞至建構函式)或其標識碼(傳遞不帶正負號的整數作為自變數)。 建議使用資源標識碼。

注意

衍生類別 必須 提供自己的建構函式。 在衍生類別的建構函式中,以資源名稱或標識符作為自變數呼叫建構 CRecordView::CRecordView 函式,如下列範例所示。

CRecordView::OnInitialUpdate 會呼叫 UpdateData,其會呼叫 DoDataExchange。 這個初始呼叫會將DoDataExchangeCRecordView控件連線到 CRecordset ClassWizard 所建立的欄位數據成員。 在您呼叫基類 CFormView::OnInitialUpdate 成員函式之前,無法使用這些數據成員。

注意

如果您使用 ClassWizard,精靈會定義值 enum CRecordView::IDD、在類別宣告中指定該值,並在建構函式的成員初始化清單中使用它。

範例

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

}

CRecordView::IsOnFirstRecord

呼叫這個成員函式,以判斷目前記錄是否為與此記錄檢視相關聯之 recordset 物件中的第一筆記錄。

BOOL IsOnFirstRecord();

傳回值

如果當前記錄是記錄集中的第一筆記錄,則為非零;否則為 0。

備註

此函式適用於撰寫由 ClassWizard 所撰寫之預設命令更新處理程式的您自己的實作。

如果使用者移至第一筆記錄,架構會停用您移至第一筆或上一筆記錄的任何使用者介面物件。

CRecordView::IsOnLastRecord

呼叫這個成員函式,以判斷當前記錄是否為與此記錄檢視相關聯之 recordset 物件中的最後一筆記錄。

BOOL IsOnLastRecord();

傳回值

如果當前記錄是記錄集中的最後一筆記錄,則為非零;否則為 0。

備註

此函式適用於撰寫 ClassWizard 寫入的預設命令更新處理程式自有實作,以支援使用者介面,以便從記錄移至記錄。

警告

此函式的結果很可靠,不同之處在於檢視無法偵測記錄集的結尾,直到使用者移過記錄集為止。 用戶必須先移至最後一筆記錄,記錄檢視才能告訴它必須停用任何使用者介面物件,才能移至下一筆或最後一筆記錄。 如果使用者移動超過最後一筆記錄,然後移回最後一筆記錄(或之前),記錄檢視可以追蹤用戶在記錄集中的位置,並正確地停用使用者介面物件。 IsOnLastRecord 在呼叫 實作函 OnRecordLast式 之後,也會不可靠,它會處理 ID_RECORD_LAST 命令或 CRecordset::MoveLast

CRecordView::OnGetRecordset

傳回與記錄檢視相關聯之衍生物件的指標 CRecordset

virtual CRecordset* OnGetRecordset() = 0;

傳回值

如果成功建立物件,則為 CRecordset衍生物件的指標,否則為 NULL 指標。

備註

您必須覆寫這個成員函式,以建構或取得記錄集物件,並傳回它的指標。 如果您使用 ClassWizard 宣告記錄檢視類別,精靈會為您撰寫預設覆寫。 ClassWizard 的預設實作會在有記錄檢視時傳回儲存在記錄檢視中的記錄集指標。 如果沒有,它會建構您使用 ClassWizard 指定之類型的 recordset 物件,並呼叫其 Open 成員函式來開啟數據表或執行查詢,然後傳回物件的指標。

如需詳細資訊和範例,請參閱記錄檢視:使用記錄檢視一文

CRecordView::OnMove

呼叫這個成員函式以移至記錄集中的不同記錄,並在記錄檢視的控件中顯示其欄位。

virtual BOOL OnMove(UINT nIDMoveCommand);

參數

nIDMoveCommand
下列其中一個標準命令識別碼值:

  • ID_RECORD_FIRST移至記錄集中的第一筆記錄。

  • ID_RECORD_LAST移至記錄集中的最後一筆記錄。

  • ID_RECORD_NEXT移至記錄集中的下一筆記錄。

  • ID_RECORD_PREV移至記錄集中的上一筆記錄。

傳回值

如果移動成功,則為非零;否則,如果移動要求遭到拒絕,則為 0。

備註

默認實作會呼叫與記錄檢視相關聯之對象的適當 Move 成員函式 CRecordset

根據預設, OnMove 如果使用者在記錄檢視中變更了目前的記錄,則會更新數據源上的當前記錄。

[應用程式精靈] 會建立具有 [第一筆記錄]、[上次記錄]、[下一筆記錄] 和 [上一筆記錄] 功能表項的功能表資源。 如果您選取 [可停駐工具列] 選項,[應用程式精靈] 也會建立一個工具列,其中包含對應至這些命令的按鈕。

如果您移動超過記錄集中的最後一筆記錄,記錄檢視會繼續顯示最後一筆記錄。 如果您往後移動超過第一筆記錄,記錄檢視會繼續顯示第一筆記錄。

警告

如果記錄集沒有記錄,則呼叫 OnMove 會擲回例外狀況。 在對應的移動作業之前,呼叫適當的使用者介面更新處理程式函式 、OnUpdateRecordFirstOnUpdateRecordLastOnUpdateRecordNextOnUpdateRecordPrev ,以判斷記錄集是否有任何記錄。

另請參閱

CFormView 類別
階層架構圖表
CRecordset 類別
CFormView 類別