OracleForms基本操作
第⼀步 当然是建表了
example : -- create table
drop table t_tname;
create table t_tname(xh number(2), -- 序号
xm varchar2(10), -- 姓名
csrq date, -- 出⽣⽇期
bz varchar2(100), -- 备注
constraint pk_t_tname primary key(xh));
下⾯都以表格 t_tname 为例
第⼆步 就是实现功能了
打开form builder 前期准备⼯作
⾸先要有⼀个画布、窗⼝(假如将其名字名为cc_main,w_main)两者必须对应,然后就是添加数据块(就是
选择你建⽴的表格)布局画⾯,按照提⽰⼀步⼀步完成了,最后将你需要实现什么功能添加功能按钮,放在
另外⼀个⾮数据库块
然后就是代码编写了。
1.WHEN-NEW-FORM-INSTANCE(进⼊FROM时执⾏) 所要做的就是初始化窗⼝和⼀些⾃⼰需要的查询 1.1 将初始化窗⼝写成⼀个过程
PROCEDURE Prc_Init_Windows IS
BEGIN
Set_Window_Property(Forms_Mdi_Window,TITLE, 'WINDOW_NAME '); --设置多⽂档窗
⼝标题
Set_Window_Property(Forms_Mdi_Window,WINDOW_STATE,maximize); --设置多⽂档窗⼝最
⼤化
Set_Window_Property( 'W_Main ',WINDOW_STATE,maximize); --设置主
窗⼝最⼤化
:System.Message_Level:= '15 ';
--设置信息提⽰级别
END;
然后直接调⽤过程在WHEN-NEW-FORM-INSTANCE触发器⾥
-- code
Prc_Init_Windows;
GO_BLOCK( 't_tname ');
SET_BLOCK_PROPERTY( 't_tname ',INSERT_ALLOWED,PROPERTY_false); SET_BLOCK_PROPERTY( 't_tname ',UPDATE_ALLOWED,PROPERTY_false); execute_query; -- 内置⼦程序执⾏查询(查询所有记录)
2.添加 (所要做的就是保证序号不能为空,关键字)
两种操作⽅法⼀种直接在界⾯上输⼊,⼆种弹出另外⼀个窗⼝进⾏操作
就讲第⼀种吧,定义⼀个form参数p_xh (在对象导航器⾥⾯定义)
declare
nXH NUMBER(2);
BEGIN
GO_BLOCK( 't_tname ');
SET_BLOCK_PROPERTY( 't_tname ',INSERT_ALLOWED,PROPERTY_TRUE); SET_BLOCK_P
ROPERTY( 't_tname ',UPDATE_ALLOWED,PROPERTY_false); last_record;
create_record;
select max(xh) into nXH from t_tname;
update是什么:parameter.p_xh := nXH;
:t_tname.xh := :parameter.p_xh;
END;
在t_tname数据块中添加WHEN-NEW-RECORD-INSTANCE触发器
if get_block_property( 't_tname ',insert_allowed) = 'true ' then
if :t_tname.xh is null then
:parameter.p_xh := :parameter.p_xh + 1;
:t_tname.xh := :parameter.p_xh;
end if;
end if;
3.修改
GO_BLOCK( 't_tname ');
IF :t_tname.XH IS NOT NULL THEN
SET_BLOCK_PROPERTY( 't_tname ',INSERT_ALLOWED,PROPERTY_FALSE); SET_BLOCK_PROPERTY( 't_tname ',UPDATE_ALLOWED,PROPERTY_TRUE); END IF;
4.删除
GO_BLOCK( 't_tname ');
IF :t_tname.XH IS NOT NULL THEN
SET_BLOCK_PROPERTY( 't_tname ',delete_ALLOWED,PROPERTY_true);
delete_record;
commit;
SET_BLOCK_PROPERTY( 't_tname ',delete_ALLOWED,PROPERTY_false);
END IF;
5.保存
GO_BLOCK( 't_tname ');
COMMIT;
SET_BLOCK_PROPERTY( 't_tname ',delete_ALLOWED,PROPERTY_FALSE);
SET_BLOCK_PROPERTY( 't_tname ',INSERT_ALLOWED,PROPERTY_FALSE);
SET_BLOCK_PROPERTY( 't_tname ',UPDATE_ALLOWED,PROPERTY_FALSE);
6.撤消
DECLARE
P_WHERE VARCHAR2(200);
BEGIN
GO_BLOCK( 't_tname ');
CLEAR_BLOCK(NO_COMMIT);
P_WHERE := GET_BLOCK_PROPERTY( 't_tname ',DEFAULT_WHERE);
SET_BLOCK_PROPERTY( 't_tname ',DEFAULT_WHERE,P_WHERE);
EXECUTE_QUERY;
END;
7.查询
以姓名和出⽣⽇期为字段进⾏查询,从新添加⼀个窗⼝和画布,⼀个查询⾮数据块(例如块名为
BLK_QUERY)
DECLPARE
P_WHERE VARCAHR2(200) := '1=1 ';
BEGIN
IF :BLK_QUERY.XM IS NOT NULL THEN
P_WHERE := P_WHERE|| ' AND XM = '||CHR(39)||:BLK_QUERY.XM||CHR(39); END IF;
IF :BLK_QUERY.CSRY IS NOT NULL THEN
P_WHERE := P_WHERE|| ' AND TO_CHAR(CSRY, ' 'YYYYMMDD ' ') =
'||CHR(39)||TO_CHAR(:BLK_QUERY.CSRY, 'YYYYMMDD ')||CHR(39);
END IF;
GO_BLOCK( 't_tname ');
CLEAR_BLOCK(NO_VALIDATE);
SET_BLOCK_PROPERTY( 't_tname ',DEFAULT_WHERE,P_WHERE);
EXECUTE_QUERY;
END;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论