ORACLE*Forms中ListItem加载数据的两种方法

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

Developer/2000 是ORACLE 公 司 推 出 的 集 成 化 软 件 开 发 和 运 行 环 境。 它 主 要 包 括3 个 集 成 化 应 用 开 发 工 具:Forms( 数 据 表 格 生 成 工 具)、Reports( 数 据 统 计 及 报 表 生 成 工 具)、Graphics( 数 据 图 形 生 成 工 具)。 笔 者 在 项 目 开 发 中 曾 以Developer/2000 作 为 前 台 开 发 工 具, 本 文 将 以Forms 为 例 介 绍 一 些Forms 的 开 发 技 巧。

---- 在 开 发 应 用 中, 经 常 用 到List_Item 控 件, 此 控 件 是 列 表 框, 可 以 让 用 户 在 多 个 备 选 值 中 进 行 选 择。 列 表 框 的 加 载 有 两 种 方 式。 一 种 是 固 定 的, 另 一 种 是 动 态 的。

---- 1 . 固 定 式。 即 列 表 框 中 的 数 据 是 固 定 的。 这 种 方 式 比 较 简 单, 无 需 编 程 既 可 实 现。 假 设 有 一 个List_Item 控 件, 且 命 名 为List1, 如 图1 所 示。 在List1 的 属 性List elements 中 填 加 要 选 择 的 数 据 项, 即 可 达 到 目 的。 当 开 发 人 员 对 数 据 库 较 熟 悉 或 数 据 库 表 中 的 数 据 项 比 较 固 定 时, 可 采 用 此 种 方 式。

---- 2 . 动 态 式。 即 列 表 框 中 的 值 会 随 着 数 据 库 表 中 数 据 项 的 变 化 而 变 化。 此 种 方 式 的 通 用 性 较 强, 可 以 满 足 用 户 的 需 要。 在 实 际 应 用 中, 较 常 用 的 是 此 种 通 用 性 的 方 式。 本 文 将 举 一 个 实 例, 来 说 明 此 种 方 法 的 实 现。

---- 假 设 有 一 个 产 品 销 售 数 据 表SALES, 并 含 有 时 间(Time), 产 品 名 称(Name), 销 售 量(Amount) 三 个 字 段, 如 表1 所 示。

时 间 产 品 名 称 销 售 量

1997 彩 电100

1998 彩 电120

1997 冰 箱90

1998 冰 箱80

1997 空 调110

1998 空 调130

表1

---- 为 了 分 析 需 要, 现 要 求 用 列 表 框 把 所 有 产 品 的 名 称 显 示 出 来。 我 们 建 立 一 个 过 程pl, 并 用 游 标 来 实 现 此 功 能。 过 程pl 的 程 序 代 码 如 下:

PROCEDURE pl IS

cursor c1 is

select name from sales;

cnt number;

i number;

tname sales.name%type;

BEGIN

clear_list('list1');

open c1;

select count(distinct name) into cnt from sales;

for i in 1..cnt loop

fetch c1 into tname;

add_list_element('list1',i,tname,tname);

end loop;

delete_list_element('list1',cnt+1);

close c1;

END;

---- 在Forms 中 设 置WHEN_NEW_FORM_INSTANCE 触 发 器 并 调 用 此 过 程, 即 完 成 了 此 工 作。 其 结 果 显 示 如 图2 所 示。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航