珠海远都软件有限公司 卞国斌
---- Microsoft 的ActiveX 技 术, 为 应 用 程 序 开 发 提 供 了 强 大 的 工 具。 程 序 开 发 人 员 通 过 使 用ActiveX 控 件, 例 如 系 统 定 制 的 按 钮、 文 本 框、 列 表 框、 组 合 框, 或 者 由 自 己 创 建 的 更 加 复 杂 的 组 合 控 件, 可 以 轻 松 快 捷 地 开 发 出 各 种 应 用 程 序。
---- 笔 者 运 用ActiveX 组 件 技 术, 在Visual Basic 5 ( 简 体 中 文 版) 环 境 下, 创 建 了 一 个 通 用 的 查 询 控 件。 该 控 件 的 功 能 是, 根 据 用 户 的 选 择, 生 成 对 数 据 库 表 的 各 种 查 询 组 合, 即 查 询 语 句 的Where 子 句。
控 件 的 实 现 步 骤
---- 1. 建 立 控 件 工 程
---- 从" 文 件" 菜 单 里 选 择" 新 建 工 程" 命 令。 在 新 建 工 程 对 话 框 里, 选 择"ActiveX 控 件" 图 标, 用" 查 询 控 件.VBP" 文 件 名 保 存 工 程。 这 时 在 工 具 栏 中 已 经 添 加 了" 查 询 控 件" 的 图 标, 并 且 该 控 件 和OLE 控 件 的 图 标 都 处 于 隙 式 状 态。 只 要" 查 询 控 件" 可 见, 它 们 就 始 终 为 此 状 态。
---- 2. 建 立 控 件 窗 体
---- 对 工 程 中 的UserControl1( 用 户 控 件) 模 块 进 行 处 理, 建 立 如 图 所 示 的 控 件 对 象 窗 体:
---- (1) 放 置1 个 标 签 框。 设 置Caption 属 性 为" 选 择 查 询 条 件:";
---- (2) 放 置7 个 检 查 框。 检 查 框 由 上 而 下 名 为Check1(0)-Check1(6), 且Check1(6) 的Caption 属 性 设 为" 显 示 查 询 字 符 串";
---- (3) 放 置18 个 组 合 框。 组 合 框 分 左、 中、 右3 列6 横 行, 自 左 至 右、 由 上 而 下, 名 为Combo1(0)-Combo1(17)。 给 中 间 列6 个 组 合 框 的List 属 性 输 入: =、< =、 >=、< 、 >、Like 等 关 系 运 算 符;
---- (4) 放 置10 个 选 择 按 钮。 按 钮 自 左 到 右、 由 上 而 下 名 为Option1(0) -Option1(9), 且 左 列 的Text 的 属 性 设 为" 与", 右 列 设 为" 或"。
---- (5) 放 置2 个 命 令 按 钮。 按 钮 名 为Command1(0) 和Command1(1), 设 置Caption 属 性 分 别 为" 确 定" 和" 取 消"。
---- 3. 定 义 控 件 属 性 和 事 件
---- 控 件 属 性 和 事 件, 是 控 件 的 使 用 者 与 控 件 交 互 的 接 口。 由 于 该 控 件 要 根 据 使 用 者 的 要 求 查 询 指 定 的 数 据 库 表, 并 返 回 查 询 字 符 串, 故 需 定 义Connect( 数 据 库 连 接 信 息)、Database( 数 据 库 名)、Tablename( 表 名) 三 个 属 性 和GetSelectionSql( 获 取 查 询 字 符 串) 一 个 事 件。
---- 定 义 控 件 属 性 有 几 种 方 法: 一 是 使 用 类 属 性 过 程。 二 是 建 立 属 性 页。 这 里 使 用 最 简 单 的 方 法, 向 控 件 模 块 添 加 公 共 变 量。
---- 在 控 件 代 码 的" 通 用 声 明" 区 域 输 入 下 述 代 码:
Public Connect, Database, Tablename As String
Public Event GetSelectionSql(ByVal SelectionSql As String)
同时定义几个临时变量:
Dim db As Database, rs, rs1 As Recordset
Dim SelectionSql,Msg As String
Dim i As Integer
---- 4. 为 控 件 编 程
---- 为 了 实 现 控 件 功 能, 需 要 对 控 件 的 事 件 编 程。( 以 下 程 序 都 经 过 实 际 运 行 测 试, 可 以 原 样 复 制 使 用)
(1) o1(Index + 2), Combo1(Index).Text)
End Select
End Sub
---- (6) 单 击 命 令 按 钮: 单 击" 确 定" 时,