阿木伯 著 |
|
FORM中,怎樣創(chuàng)建動態(tài)下拉列表List? |
|
- 軟件環(huán)境:
1、服務(wù)器端:Windows NT4.0+ORACLE 8.0.4
ORACLE安裝路徑為:C:\ORANT
2、客戶端:Windows 98、Developer/2000客戶端安裝(版本2.1)
- 實(shí)現(xiàn)方法:
1、打開Form Builder
2、文件(F)→新建(N)→表格(F)
3、新建一個非數(shù)據(jù)塊,取名為tool
4、鼠標(biāo)右鍵→布局編輯器(E)
5、建一個列表項(xiàng),名為xl(屬于tool塊)
6、新建一過程,內(nèi)寫如下的代碼
PROCEDURE create_xl IS --動態(tài)顯示學(xué)歷過程
CURSOR A IS SELECT DISTINCT(xl) FROM t_xl; --建立a游標(biāo),從學(xué)歷檔案表取原始數(shù)據(jù)(有可能動態(tài)變化)
CNT NUMBER; --記錄總數(shù)變量,用于生成列表的總項(xiàng)數(shù)
i NUMBER; --循環(huán)變量
TNAME t_xl.name%TYPE; --TNAME變量和t_xl表中name項(xiàng)具有相同的結(jié)構(gòu)
BEGIN
CLEAR_LIST('tool.xl'); --清空列表tool.xl(tool塊上的xl項(xiàng))
SELECT COUNT(DISTINCT(name)) INTO CNT FROM t_xl; --計(jì)算列表總數(shù)
OPEN A; --打開游標(biāo)
FOR i IN 1..CNT LOOP --開始循環(huán)
FETCH A INTO TNAME; --取數(shù)
EXIT WHEN A%NOTFOUND; --退出條件
ADD_LIST_ELEMENT('tool.xl',i,TNAME,TNAME); --把查詢出的值加入列表中(序號,實(shí)際值,顯示值)
END LOOP; --結(jié)束循環(huán)
CLOSE A; --關(guān)閉游標(biāo)
END;
7、在Form級觸發(fā)器中添加觸發(fā)WHEN-NEW-FORM-INSTANCE
在此觸發(fā)器中寫如下代碼:create_xl;
使FORM程序一啟動,就調(diào)用此過程,達(dá)到動態(tài)生成下拉列表List的效果。
附:
--學(xué)歷檔案表
create table t_xl(name varchar2(6));
insert into t_xl values('小學(xué)');
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;
|
【最后更新:】 |
|