|
实用技巧
隐 藏 数 据 窗 口 中 下 拉 数 据 窗 的 检 索 参 数
兰 州 铁 道 学 院
胡 法 红
----
[ 本 文 中 图 省 略, 需 要 者 可 下 载 全 文,Zip 14KB]
----
面 向 对 象 的 开 发 工 具PowerBuilder 是 目 前 流 行 的 数 据 库 前 端 开 发 工 具 之 一, 特 别 是 它 的 数 据 窗 口, 用 它 可 以 很 方 便 地 对 数 据 库 进 行 操 作, 并 且 数 据 窗 口 对 象 又 以 其 灵 活 多 样 的 显 示 风 格 深 得 广 大 开 发 者 的 喜 爱。 有 时 候, 数 据 窗 口 对 象 中 的 某 些 列 的 取 值 必 须 满 足 一 定 的 条 件 且 来 自 于 另 一 个 数 据 源, 这 样, 我 们 就 要 使 用 下 拉 数 据 窗 口 风 格 的 数 据 窗 口 对 象, 并 且 在 下 拉 数 据 窗 口 中 设 置 检 索 参 数, 该 下 拉 数 据 窗 口 仅 显 示 满 足 条 件 的 数 据。 不 幸 的 是, 如 果 我 们 直 接 使 用 该 带 参 数 的 下 拉 数 据 窗 口, 在 我 们 使 用Insertrow()、Retrieve() 函 数 操 纵 数 据 窗 口 时, 系 统 会 自 动 检 索 下 拉 数 据 窗 口, 出 现"Specify Retrieval" 对 话 框, 怎 样 才 能 避 免 该 对 话 框 出 现 呢 ?
----
为 了 避 免 出 现"Specify Retrieval" 对 话 框 的 出 现, 我 们 在 操 纵 主 数 据 窗 口 之 前 必 须 先 操 纵 下 拉 数 据 窗 口。 为 了 让 读 者 更 清 楚 具 体 操 作 过 程, 我 们 以 一 个 具 体 实 例 的 实 现 为 例 具 体 操 作。 本 例 子 的 数 据 来 自 于 两 个 表:bj 和student。 具 体 步 骤 如 下:
----
一 . 创 建 窗 口w_test, 窗 口 上 的 控 件 有: 命 令 按 钮:cb_1( 插 入)、cb_2( 关 闭), 数 据 窗 口 控 件dw_1, 静 态 文 本st_1( 年 度), 单 行 编 辑 框sle_1。
----
二 . 创 建 基 于 表student 的 数 据 窗 口 对 象d_student、 基 于 表bj 的 数 据 窗 口 对 象d_bj; 其 中 设 置d_bj 中 的 列"nd( 年 度)" 设 置 检 索 参 数, 参 数 名 为nd(string), 当 检 索 子 数 据 窗 时, 下 拉 数 据 窗 显 示 满 足nd=:nd 的 数 据; 而d_student 的 列class( 班 级) 为 下 拉 数 据 窗 风 格, 子 数 据 窗 为d_bj; 这 样, 当 单 击 " 插 入" 时, 数 据 窗 的" 班 级" 列 只 显 示 满 足 条 件"nd=sle_1.text" 的 班 级 名 称。
----
三 . 在 窗 口"w_test" 中 声 明 事 例 变 量(Instance Variables):DatawindowChild child
----
四 . 在 窗 口open 事 件 中 写 入 以 下 脚 本 程 序:sle_1.text=string(today(),"yyyy")
dw_1.settransobject(sqlca)
----
五 . 在 命 令 按 钮cb_1( 插 入) 的"clicked" 事 件 中 写 入 以 下 脚 本 程 序:
dw_1.getchild("class",child)
child.settransobject(sqlca)
child.retrieve(sle_1.text)
dw_1.settransobject(sqlca)
dw_1.insertrow(0)
----
此 时, 光 标 停 于 单 行 编 辑 框sle_1 内, 在 该 编 辑 框 内 输 入 年 度 号( 如:1998) 然 后 单 击 命 令 按 钮cb_1( 插 入), 移 动 光 标 到 新 添 加 行 的" 班 级" 列, 单 击, 出 现 下 拉 数 据 窗 口( 如 图 二), 该 子 窗 口 出 现 的 数 据 就 为 满 足nd="1998" 的 班 级 名 称。
----
从 上 面 的 实 例 操 作 可 知, 为 了 在 子 数 据 窗 口 中 仅 显 示 满 足 条 件 的 数 据, 就 必 须 为 子 数 据 窗 口 设 置 检 索 参 数, 单 为 了 在 操 纵 主 数 据 窗 口 时 出 现"Specify Retrival" 窗 口, 只 需 在 操 纵 主 数 据 窗 口 之 前 先 对 子 数 据 窗 口 操 纵, 这 样 就 可 以 达 到 我 们 的 要 求。
|