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小时内删除。