Developer/ 是ORACLE 公 司 推 出 的 集 成 化 软 件 开 发 和 运 行 环 境 它 主 要 包 括 个 集 成 化 应 用 开 发 工 具Forms( 数 据 表 格 生 成 工 具)Reports( 数 据 统 计 及 报 表 生 成 工 具)Graphics( 数 据 图 形 生 成 工 具) 笔 者 在 项 目 开 发 中 曾 以Developer/ 作 为 前 台 开 发 工 具 本 文 将 以Forms 为 例 介 绍 一 些Forms 的 开 发 技 巧
在 开 发 应 用 中 经 常 用 到List_Item 控 件 此 控 件 是 列 表 框 可 以 让 用 户 在 多 个 备 选 值 中 进 行 选 择 列 表 框 的 加 载 有 两 种 方 式 一 种 是 固 定 的 另 一 种 是 动 态 的
. 固 定 式 即 列 表 框 中 的 数 据 是 固 定 的 这 种 方 式 比 较 简 单 无 需 编 程 既 可 实 现 假 设 有 一 个List_Item 控 件 且 命 名 为List 如 图 所 示 在List 的 属 性List elements 中 填 加 要 选 择 的 数 据 项 即 可 达 到 目 的 当 开 发 人 员 对 数 据 库 较 熟 悉 或 数 据 库 表 中 的 数 据 项 比 较 固 定 时 可 采 用 此 种 方 式
. 动 态 式 即 列 表 框 中 的 值 会 随 着 数 据 库 表 中 数 据 项 的 变 化 而 变 化 此 种 方 式 的 通 用 性 较 强 可 以 满 足 用 户 的 需 要 在 实 际 应 用 中 较 常 用 的 是 此 种 通 用 性 的 方 式 本 文 将 举 一 个 实 例 来 说 明 此 种 方 法 的 实 现
假 设 有 一 个 产 品 销 售 数 据 表SALES 并 含 有 时 间(Time) 产 品 名 称(Name) 销 售 量(Amount) 三 个 字 段 如 表 所 示
时 间 产 品 名 称 销 售 量
彩 电
彩 电
冰 箱
冰 箱
空 调
空 调
表
为 了 分 析 需 要 现 要 求 用 列 表 框 把 所 有 产 品 的 名 称 显 示 出 来 我 们 建 立 一 个 过 程pl 并 用 游 标 来 实 现 此 功 能 过 程pl 的 程 序 代 码 如 下
PROCEDURE pl IS
cursor c is
select name from sales;
cnt number;
i number;
tname salesname%type;
BEGIN
clear_list(list);
open c;
select count(distinct name) into cnt from sales;
for i in t loop
fetch c into tname;
add_list_element(listitnametname);
end loop;
delete_list_element(listcnt+);
close c;
END;
在Forms 中 设 置WHEN_NEW_FORM_INSTANCE 触 发 器 并 调 用 此 过 程 即 完 成 了 此 工 作 其 结 果 显 示 如 图 所 示