C O le DBRecordView

COleDBRecordView 对 象 是 一 个 用 来 显 示 受 控 制 的 数 据 库 记 录 的 视 窗 。 这 个 视窗 是 一 个 直 接 连 接 于 CRowset 对 象 的 表 格 视 窗 。 该 视 窗 是 从 一 个 对 话 框 模 板 资源 生 成 来 的 , 并 且 在 对 话 框 模 板 的 控 件 中 显 示 CRowset 对 象 域 。COleDBRecordView 对 象 使 用 对 话 框 数 据 交 换 ( DDX ) 和 CRowset 中 的 导 航 功能 , 来 使 数 据 在 表 格 上 的 控 件 与 行 集 之 间 自 动 移 动 。 COleDBRecordView 也 提供 缺 省 的 用 于 移 动 到 第 一 个 , 下 一 个 , 前 一 个 或 最 后 一 个 的 实 现 , 并 且 提 供 在当 前 视 窗 中 用 于 更 新 记 录 的 界 面 。

注 意 如 果 你 使 用 Date Acc ess Object s( DAO )类比使用 OLE DB Consumer Template 类 更 多 , 请 使 用 CDaoRecordView 来 代 替 。 如 果 要 获 取 更 多 的信 息 , 请 参 见 “ Visual C++ 程 序 员 指 南 ” 一 书 中 的 文 章 “ 数 据 库 主 题 ( 总体 ) ” 和 “ DAO 和 MFC ” 。

COleDBRecordView 在 行 集 中 跟 踪 用 户 的 位 置 , 因 此 记 录 视 窗 可 以 更 新 用 户 界

面 。 当 用 户 移 动 到 行 集 的 任 何 一 端 时 , 记 录 视 窗 就 会 使 用 在 同 一 方 向 上 进 一 步移 动 的 用 户 界 面 对 象 – – – 如 菜 单 项 或 工 具 条 按 钮 无 效 。

如 果 要 获 取 更 多 关 于 行 集 类 的 信 息 , 请 参 见 “ M icrosoft Visual C++ 6.0 类 库 参考 手 册 ”中的“ Microsoft Visual C++6.0 模 板 库 参 考 ”卷 中 的 文 章“ 使 用 OLE DB Consumer Template s” 。

#include <afxoledb.h>

CO leDBRecordView 类 成 员

Construction

COleDBRecordView 构 造 一 个 COleDBRecordView 对象

Attributes

OnGetRowset 返 回 一 个 指 向 CRowset 类 对 象 的 指 针

Operation s OnMove 更 新 数 据 源 上 的 当 前 记 录 ( 如 果 变 脏 了 ) , 然 后

移 动 到 指 定 的 记 录 ( 下 一 个 , 前 一 个 , 第 一 个 或

最 后 一 个 )

成 员 函 数

CO leDBRecordView::COleDBRecordView

COleDBRecordView( LPCTSTR lpszTemplateName ); COleDBRecordView( UINT nIDTemplate );

参 数

lpszTemplateName

记 录 一 个 以 空 字 符 结 尾 的 字 符 串 , 该 字 符 串 是 一 个 对 话 框 模 板 资 源 的 名

字 。

nIDTemplate

记 录 一 个 对 话 框 模 板 资 源 的 ID 号。

说 明

当 你 创 建 一 个 类 型 是 从 COleDBRecordView 派 生 而 来 的 对 象 时 , 激 活 其 中 的 一个 构 造 函 数 来 生 成 一 个 视 对 象 , 并 且 标 识 该 视 所 基 于 的 对 话 框 资 源 。 你 可 以 用名 字 来 标 识 相 应 的 资 源 ( 将 一 个 字 符 串 作 为 参 数 传 递 给 构 造 函 数 ) , 或 者 用 它的 ID 来 标 识 ( 将 一 个 无 符 号 的 整 数 作 为 参 数 传 递 给 构 造 函 数 ) 。

注 意 你 的 派 生 类 必 须 提 供 它 自 己 的 构 造 函 数 。 在 这 个 构 造 函 数 中 , 用资 源 的 名 字 或 ID 作 为 一 个 参 数 来 激 活 构 造 函 数COleDBRecordView::COleDBRecordView 。

CO leDBRecordView::OnGetRowset virtual CRowset* OnGetRowset() = 0; 返 回 值

如 果 成 功 的 生 成 了 对 象 则 返 回 一 个 指 向 CRowset 对 象 的 指 针 ; 否 则 返 回 一 个

NULL 指 针 。

说 明

此 函 数 返 回 一 个 指 向 CRowset 对 象 的 指 针 。 为 了 构 造 或 获 得 一 个 行 集 对 象 , 并返 回 一 个 指 向 该 对 象 的 指 针 , 你 必 须 重 载 这 个 函 数 。 如 果 你 用 ClassWizard 来声 明 你 的 记 录 视 类 , 则 向 导 将 为 你 进 行 缺 省 的 重 载 。 ClassWizard 的 缺 省 实 现 返回 保 存 在 记 录 视 窗 中 的 行 集 指 针 , 如 果 这 个 指 针 存 在 的 话 。 如 果 指 针 不 存 在 , 它 就 构 造 一 个 行 集 对 象 , 该 对 象 的 类 型 是 你 用 ClassWizard 指 定 的 , 接 着 调 用

它 的 成 员 函 数 Open 来 打 开 表 或 运 行 一 次 查 询 , 然 后 返 回 一 个 指 向 该 对 象 的 指针 。

CO leDBRecordView::OnMove

virtual BOOL OnMove( U INT nIDMoveCommand )

返 回 值

如 果 移 动 成 功 则 返 回 非 零 值 ; 如 果 移 动 请 求 被 忽 略 则 返 回 0 。

参 数

nIDMoveCommand

是 下 面 列 出 的 标 准 命 令 ID 值 之 一 :

  • ID_RECORD_FIRST 移 动 到 记 录 集 中 的 第 一 个 记 录 。
  • ID_RECORD_LAST

移 动 到 记 录 集 中 的 最 后 一 个 记 录 。

  • ID_RECORD_NEXT

移 动 到 记 录 集 中 的 下 一 个 记 录 。

说 明

  • ID_RECORD_PREV

移 动 到 记 录 集 中 的 前 一 个 记 录 。

这 个 成 员 函 数 可 以 实 现 在 行 集 中 移 动 到 不 同 的 记 录 , 并 且 在 记 录 视 窗 的 控 件 中显 示 该 记 录 的 字 段 。 其 缺 省 的 实 现 是 与 记 录 视 窗 相 关 的 CRowset 对 象 的 适 当 的成 员 函 数 Move 。

缺 省 的 , 如 果 用 户 改 变 了 记 录 视 窗 中 的 数 据 , 则 OnMove 更 新 数 据 源 中 的 当 前记 录 。

AppWizard 创 建 一 个 菜 单 资 源 , 它 具 有 First Record , Last Record , Next Record

和 Previous Record 菜 单 项 。 如 果 你 选 择 了 Dockable Toolbar 选 项 , AppWizard

就 创 建 一 个 工 具 条 , 其 上 有 对 应 于 这 些 命 令 的 按 钮 。

如 果 你 在 记 录 集 中 移 动 超 过 了 最 后 一 个 记 录 , 则 在 记 录 视 窗 中 仍 然 显 示 最 后 一个 记 录 。 如 果 你 超 过 了 第 一 个 记 录 , 则 在 视 窗 中 仍 然 显 示 第 一 个 记 录 。