COleDBRecordView 类
显示控件中数据库记录的视图。
语法
class COleDBRecordView : public CFormView
成员
受保护构造函数
名称 | 描述 |
---|---|
COleDBRecordView::COleDBRecordView | 构造 COleDBRecordView 对象。 |
公共方法
名称 | 描述 |
---|---|
COleDBRecordView::OnGetRowset | 返回标准 HRESULT 值。 |
COleDBRecordView::OnMove | 更新数据源上的当前记录(如果是脏的),然后移动到指定的记录(下一个、上一个、第一个或最后一个)。 |
注解
该视图是直接连接到 CRowset
对象的窗体视图。 该视图是从对话模板资源创建的,并在对话模板的控件中显示 CRowset
对象的字段。 COleDBRecordView
对象使用对话数据交换 (DDX) 和内置于 CRowset
中的导航功能来自动在窗体上的控件和行集的字段之间移动数据。 COleDBRecordView
还提供了用于移动到第一条、下一条、上一条或最后一条记录的默认实现,以及用于更新当前查看的记录的接口。
可以将 DDX 函数与 COleDbRecordView
配合使用,以直接从数据库记录集中获取数据并将其显示在对话控件中。 应使用 DDX_*
方法(例如 DDX_Text
),而不是 DDX_Field*
函数(例如 DDX_FieldText
)与 COleDbRecordView
。 DDX_FieldText
不能与 COleDbRecordView
一起使用,因为 DDX_FieldText
采用类型为 CRecordset*
(用于 CRecordView
)或 CDaoRecordset*
(用于 CDaoRecordView
)的附加参数。
注意
如果使用的是数据访问对象 (DAO) 类而不是 OLE DB 使用者模板类,请改用 CDaoRecordView 类。 有关详细信息,请参阅文章概述:数据库编程。
COleDBRecordView
跟踪用户在行集中的位置,以便记录视图可以更新用户界面。 当用户移动到行集的任一端时,记录视图会禁用用户界面对象(例如菜单项或工具栏按钮)以沿相同方向进一步移动。
有关行集类的详细信息,请参阅使用 OLE DB 使用者模板一文。
继承层次结构
COleDBRecordView
要求
标头:afxoledb.h
COleDBRecordView::COleDBRecordView
构造 COleDBRecordView
对象。
COleDBRecordView(LPCTSTR lpszTemplateName);
COleDBRecordView(UINT nIDTemplate);
参数
lpszTemplateName
包含一个以 null 结尾的字符串,它是对话模板资源的名称。
nIDTemplate
包含对话模板资源的 ID 号码。
注解
创建从 COleDBRecordView
派生的类型的对象时,调用其中一个构造函数来创建视图对象并标识视图所基于的对话框资源。 可以通过名称(将字符串作为参数传递给构造函数)或资源 ID(将无符号整数作为参数传递)来标识资源。
注意
派生类必须提供自己的构造函数。 在构造函数中,调用构造函数 COleDBRecordView::COleDBRecordView
,并将资源名称或 ID 作为参数。
COleDBRecordView::OnGetRowset
返回与记录视图关联的 CRowset<> 对象的句柄。
virtual CRowset<>* OnGetRowset() = 0;
返回值
标准 HRESULT 值。
备注
必须重写此成员函数才能构造或获取行集对象,并返回一个句柄。 如果使用 ClassWizard 声明记录视图类,向导会为你编写默认替代。 ClassWizard 的默认实现返回记录视图中存储的行集句柄(如果存在)。 如果没有,它会构造一个你使用 ClassWizard 指定的类型的行集对象,并调用其 Open
成员函数来打开表或运行查询,然后返回该对象的句柄。
注意
在 MFC 7.0 之前,OnGetRowset
返回指向 CRowset
的指针。 如果有调用 OnGetRowset
的代码,则需要将返回类型更改为模板化类 CRowset<>。
示例
CFrameWnd* pFrame = (CFrameWnd*)AfxGetMainWnd();
COleDBRecordView* pView = (COleDBRecordView*)pFrame->GetActiveView();
// CProductAccessor is a user-defined accessor class
CRowset<CAccessor<CProductAccessor>>* pRowSet =
(CRowset<CAccessor<CProductAccessor>>*)pView->OnGetRowset();
有关详细信息和示例,请参阅文章记录视图:使用记录视图。
COleDBRecordView::OnMove
移动到行集中的不同记录,并在记录视图的控件中显示其字段。
virtual BOOL OnMove(UINT nIDMoveCommand);
参数
nIDMoveCommand
以下标准命令 ID 值之一:
ID_RECORD_FIRST - 移动到记录集中的第一条记录。
ID_RECORD_LAST - 移动到记录集中的最后一条记录。
ID_RECORD_NEXT - 移动到记录集中的下一条记录。
ID_RECORD_PREV - 移动到记录集中的上一条记录。
返回值
如果转移成功,则返回非零值;否则,如果拒绝了转移请求,则返回 0。
备注
默认实现调用与记录视图关联的 CRowset
对象的相应 Move
成员函数。
默认情况下,如果用户在记录视图中更改了数据源上的当前记录,OnMove
会更新它。
应用程序向导创建一个包含第一条记录、最后一条记录、下一条记录和上一条记录菜单项的菜单资源。 如果选择可停靠工具栏选项,应用程序向导还会创建一个带有与这些命令对应的按钮的工具栏。
如果移过记录集中的最后一条记录,记录视图将继续显示最后一条记录。 如果向后移过第一条记录,记录视图将继续显示第一条记录。