楼主: ganghz

[转载] Oracle Form 6i开发

[复制链接]
论坛徽章:
259
地主长老
日期:2008-05-16 13:45:41春季摄影比赛纪念奖
日期:2008-06-04 10:35:252008欧洲杯之星
日期:2008-07-01 14:52:28金牌徽章
日期:2008-09-04 11:32:50地主之星
日期:2009-03-30 10:29:22欧洲冠军杯纪念徽章
日期:2009-05-31 09:59:59NBA季后赛大富翁
日期:2009-06-16 11:48:01NBA之星
日期:2010-04-15 14:14:34NBA大富翁
日期:2010-04-15 14:17:22博彩之星
日期:2010-07-12 13:14:39
61#
 楼主| 发表于 2008-8-25 21:03 | 只看该作者
3. Triggers in TEMPLATE
前面已经提过,forms的开发大多由template.fmb修改而成,template窗体本身就预包含了许多标准格式的form-level的trigger,等待开发者修改。在这之中,必须要修改的trigger有:PRE-FORM;可能要修改的trigger有:KEY-CLRFRM,POST-FORM, QUERY_FIND,ACCEPT;在Block或Item Level可以添加的trigger有WHEN-NEW-RECORD-INSTANCE,WHEN-NEW-BLOCK-INSTANCE,WHEN-NEW-ITEM-INSTANCE,KEY-DUPREC,KEY-MENU,KEY-LISTVAL, QUERY_FIND,ACCEPT,ON-ERROR等。

使用道具 举报

回复
论坛徽章:
259
地主长老
日期:2008-05-16 13:45:41春季摄影比赛纪念奖
日期:2008-06-04 10:35:252008欧洲杯之星
日期:2008-07-01 14:52:28金牌徽章
日期:2008-09-04 11:32:50地主之星
日期:2009-03-30 10:29:22欧洲冠军杯纪念徽章
日期:2009-05-31 09:59:59NBA季后赛大富翁
日期:2009-06-16 11:48:01NBA之星
日期:2010-04-15 14:14:34NBA大富翁
日期:2010-04-15 14:17:22博彩之星
日期:2010-07-12 13:14:39
62#
 楼主| 发表于 2008-8-25 21:03 | 只看该作者
4. Coding Triggers
    创建Trigger时要特别注意Trigger的Execution Hierarch属性。一般情况下Block或Item-Level Triggers的Execution Hierarch属性—>Before,但是以下两种情况例外:一是定义用户右键菜单的,Block或Item-Level Triggers的Execution Hierarch属性—>After;二是窗体中某个字段使用了form-level POST-QUERY trigger,那么block-level POST-QUERY trigger的Execution Hierarch属性—>After。
      以下是oracle给出的Block或Item-Level Triggers的Execution Hierarch属性的限定:必须设置为Before的trigger有WHEN-NEW-RECORD-INSTANCE, WHEN-NEW-BLOCK-INSTANCE,WHEN-NEW-ITEM-INSTANCE;可以设置为Override的trigger有KEY-DUPREC,KEY-MENU,KEY-LISTVAL,QUERY_FIND, ACCEPT。

使用道具 举报

回复
论坛徽章:
259
地主长老
日期:2008-05-16 13:45:41春季摄影比赛纪念奖
日期:2008-06-04 10:35:252008欧洲杯之星
日期:2008-07-01 14:52:28金牌徽章
日期:2008-09-04 11:32:50地主之星
日期:2009-03-30 10:29:22欧洲冠军杯纪念徽章
日期:2009-05-31 09:59:59NBA季后赛大富翁
日期:2009-06-16 11:48:01NBA之星
日期:2010-04-15 14:14:34NBA大富翁
日期:2010-04-15 14:17:22博彩之星
日期:2010-07-12 13:14:39
63#
 楼主| 发表于 2008-8-25 21:03 | 只看该作者
. Tab Triggers
    与Tab相关的trigger,一个是form-level的when-tab-page-changed,另一个是block-level的when-new-item-instance。when-new-item-instance trigger处理由于tab键导航引起的tab问题,逻辑相对比较简单。when-tab-page-changed trigger则比较复杂,对着代码我也不很明白。我个人觉得处理逻辑是这样的:先判断current_canvas是不是fixed_stacked_canvas,是的话就将show_view(target_canvas)在go_item,不是的话就将target_canvas设为tab_topmost_page,然后show_view(target_canvas)在go_item。总之,要保证target_canvas一定会show出来。我的理解可能有误,希望知道的同仁能够告诉我正解,实在是复杂。

使用道具 举报

回复
论坛徽章:
259
地主长老
日期:2008-05-16 13:45:41春季摄影比赛纪念奖
日期:2008-06-04 10:35:252008欧洲杯之星
日期:2008-07-01 14:52:28金牌徽章
日期:2008-09-04 11:32:50地主之星
日期:2009-03-30 10:29:22欧洲冠军杯纪念徽章
日期:2009-05-31 09:59:59NBA季后赛大富翁
日期:2009-06-16 11:48:01NBA之星
日期:2010-04-15 14:14:34NBA大富翁
日期:2010-04-15 14:17:22博彩之星
日期:2010-07-12 13:14:39
64#
 楼主| 发表于 2008-8-25 21:03 | 只看该作者
6. 自己的一些感想
说到Trigger,个人觉得就是Oracle Form控制逻辑的精要,后面很多章节的Trigger我就不在这里再单单列出了。我想总结一下使用Trigger要注意的地方:
*Trigger的level 什么样的Trigger放在什么样的level上,什么样的Trigger放在多级level上,注意此时的Execution Hierarch属性该怎么设;
*Trigger该调用什么样的处理代码,有些Trigger调用API函数,有些调用客制化过程,虽然内容很多,但是一类Trigger调用了一类API,应多加熟悉;
*Trigger的执行顺序,这个很多网上都有详尽的说明;
*Trigger中多个处理过程的执行顺序,这个地方在某些时候是需要特别注意的。

使用道具 举报

回复
论坛徽章:
259
地主长老
日期:2008-05-16 13:45:41春季摄影比赛纪念奖
日期:2008-06-04 10:35:252008欧洲杯之星
日期:2008-07-01 14:52:28金牌徽章
日期:2008-09-04 11:32:50地主之星
日期:2009-03-30 10:29:22欧洲冠军杯纪念徽章
日期:2009-05-31 09:59:59NBA季后赛大富翁
日期:2009-06-16 11:48:01NBA之星
日期:2010-04-15 14:14:34NBA大富翁
日期:2010-04-15 14:17:22博彩之星
日期:2010-07-12 13:14:39
65#
 楼主| 发表于 2008-8-25 21:03 | 只看该作者
Lab 21: Naming Standard
当年在用.net 编程就因变量、控件命名不符合规范经常被老师骂,当时还不服气,现在越来越觉得命名规范的重要性,所以在新学习一门开发技术的时候,就要养成良好的命名习惯,以免日后积重难返。
1. Form Objects命名标准
Module应与Form文件名匹配,最好由大写连续的英文字符组成,中间无任何分隔符;
  Window,canvas,block,item的命名应当简洁而有意义,一般是以对象名称命名。特殊的block 应用特殊的命名,比如TOOLBAR,CONTROL,CONTEXT;
  Query–Find Canvasses,Windows ,Blocks,LOVs和Related Record Groups
命名如QF_object;
   Relations命名如master_detail

2. Subfunction 命名标准
开发人员需预先在系统中为form定义受限的subfunction。
Subfunctions的命名标准为 <form>_<subfunction>
Eg:PO_POXPOMPO_DELETE AR_FNDRSRUN_LISTING_RPTS
User function的命名标准为 <form name>: <subfunction>
Eg:Purchase Orders: Delete  Run Reports: Listing
这种统一的命名规范使得系统管理员可以在Responsibilities 窗体中利用LOV 的Auto-reduction方便地查到某个 responsibility 下的可用或不可用的functions(我这种理解可能值得商榷)
  如果对于某个特定的form存在许多受限的subfunction,可以将这些subfunction分类分组。

3. Program Unit命名编码标准
Program Unit中package命名多以对象名为主,常常和Block重名,为每个Block创建一个同名的package也易于管理。
Package中的function和Procedure命名多重用Item的名字,定义一个传入参数event,代码对应多个事件的一一处理分支,调用起来很方便。另外就是以下划线为分隔符命名,可能是某种事件,trigger,某个特定含义。

PACKAGE ORDERS IS
PROCEDURE Insert_Row;
PROCEDURE Update_Row;
PROCEDURE Lock_Row;
PROCEDURE Delete_Row;

PROCEDURE PRE_UPDATE;
PROCEDURE PRE_INSERT;
  
PROCEDURE lines(EVENT VARCHAR2);
PROCEDURE ORDER_ID(EVENT VARCHAR2);
PROCEDURE PAYMENT_TYPE(EVENT VARCHAR2);
PROCEDURE CHECK_NUMBER(EVENT VARCHAR2);
PROCEDURE CREDIT(EVENT VARCHAR2);
PROCEDURE DATE_SHIPPED(EVENT VARCHAR2);
PROCEDURE DESC_FLEX(EVENT VARCHAR2);

PROCEDURE VISA(EVENT VARCHAR2);
END;

使用道具 举报

回复
论坛徽章:
4
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:兔
日期:2008-12-06 15:47:422009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2014-12-11 06:00:19
66#
发表于 2008-12-22 14:31 | 只看该作者
精华。。。
非常适用于初学者
赞一个。。。。。

使用道具 举报

回复
论坛徽章:
1
67#
发表于 2008-12-22 20:28 | 只看该作者
不错,感谢分享了..

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21
68#
发表于 2010-8-23 10:42 | 只看该作者
感謝分享~~

使用道具 举报

回复
论坛徽章:
1
2010广州亚运会纪念徽章:垒球
日期:2010-11-22 15:43:33
69#
发表于 2011-1-12 15:25 | 只看该作者
确实不错,楼主辛苦

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表