阿木伯 著 |
|
FORM中,怎样创建动态下拉列表List? |
|
- 软件环境:
1、服务器端:Windows NT4.0+ORACLE 8.0.4
ORACLE安装路径为:C:\ORANT
2、客户端:Windows 98、Developer/2000客户端安装(版本2.1)
- 实现方法:
1、打开Form Builder
2、文件(F)→新建(N)→表格(F)
3、新建一个非数据块,取名为tool
4、鼠标右键→布局编辑器(E)
5、建一个列表项,名为xl(属于tool块)
6、新建一过程,内写如下的代码
PROCEDURE create_xl IS --动态显示学历过程
CURSOR A IS SELECT DISTINCT(xl) FROM t_xl; --建立a游标,从学历档案表取原始数据(有可能动态变化)
CNT NUMBER; --记录总数变量,用于生成列表的总项数
i NUMBER; --循环变量
TNAME t_xl.name%TYPE; --TNAME变量和t_xl表中name项具有相同的结构
BEGIN
CLEAR_LIST('tool.xl'); --清空列表tool.xl(tool块上的xl项)
SELECT COUNT(DISTINCT(name)) INTO CNT FROM t_xl; --计算列表总数
OPEN A; --打开游标
FOR i IN 1..CNT LOOP --开始循环
FETCH A INTO TNAME; --取数
EXIT WHEN A%NOTFOUND; --退出条件
ADD_LIST_ELEMENT('tool.xl',i,TNAME,TNAME); --把查询出的值加入列表中(序号,实际值,显示值)
END LOOP; --结束循环
CLOSE A; --关闭游标
END;
7、在Form级触发器中添加触发WHEN-NEW-FORM-INSTANCE
在此触发器中写如下代码:create_xl;
使FORM程序一启动,就调用此过程,达到动态生成下拉列表List的效果。
附:
--学历档案表
create table t_xl(name varchar2(6));
insert into t_xl values('小学');
insert into t_xl values('初中');
insert into t_xl values('职高');
insert into t_xl values('技校');
insert into t_xl values('高中');
insert into t_xl values('中专');
insert into t_xl values('大专');
insert into t_xl values('本科');
insert into t_xl values('研究生');
commit;
|
【最后更新:】 |
|