Oracle Forms基本操作

 

第一步   当然是建表了 

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_PROPERTY( 't_tname ',UPDATE_ALLOWED,PROPERTY_false); 

    last_record; 

    create_record; 

    select   max(xh)   into   nXH   from   t_tname; 

    :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; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值