oracle建erp,ORACLE ERP开发之OracleForms基础(一)

Forms基本对象概念

d7d55d65cef1833bd6a8083ffe7bd6a0.png

明白了上面的基本概念,就可以开工了。

设置ITEM为必填项

Setup:

f0f051fd2e876f03fb192bf6e1238ca6.png

Effect:

9d9f3bdb064ff49e30e85022f3235440.png

此效果与是set_item_property('test.l_test',required,property_true)一样的。

设置ITEM的初始值为当前日期

b8f7abe63771fa8462bd819bc74ad003.png

实现按“ENTER”自动跳至下一条记录

设置BLOCK属性:导航器风格:改变记录。

01d9927faf93b2ff0c973f5a65412997.png

使用堆叠画布

Effect:

2d779fdaca23f8319f679fe92d867a01.png

1. 先将数据块、画布布局好(用向导的方式就可以了,具体操作就不用讲了吧)。

2. 在画布中创建一个堆叠画布。

bf090806784d5c8043feedde411e6706.png

3. 将项的画出属性更为堆叠画布(这一步最关键了)。

abe9cbb09d35ffab4202e52ed01eaaed.png

4.调整后得到下面这效果了。

dac6246f6d05712bb4842cfb8e48d6a0.png

深入了解Forms的事务触发机制

编写一个健壮的FORMS应用程序,免不了要做各种数据的检验动作。所以必须了解FORMS事务触发器的工作原理。其他类型的触发器相对来说比较好理解,就不详说了。

① FORMS处理事务分成发送(POST)和提交(COMMIT)两个阶段。这个跟JAVA中的事务操作类似,也就是Statement和Commit两个阶段。但FORMS一些规则比较死,也就是说规定好POST之前会触发PRE触发器之类等等。

② 事务触发器分成三类,PRE-XXX、ON-XXX、POST-XXX,它们的执行顺序可以直接从其英文缩写得出。

例:执行INSERT操作,会按以下顺序进行。 1.1从数据项复制数据。 1.2触发PER-INSERT触发器。 1.3检查记录的惟一性。 1.4插入行到其表或者触发ON-INSERT触发器。 1.5触发POST-INSERT触发器。

创建FORMS数据块的主从关系

1、先创建两个数据块,当然这两个数据块在DB应该有外键的关系(不是一定要创建数据库外键关联哦?)。

2、选择从表的数据块,然后点击菜单数据块向导。

a6f2a652089fe2c2ce2b70061cdb1f13.png

3、选择关联属性。

78e584f93e250be23297bc1b6c7e5bf4.png

非孤立:表示当有从记录时,不允许删除主记录(默认)。 级联:当删除主记录时,从记录也一起删除(推荐使用)。 孤立:当删除主记录时,从记录保留不变(不推荐使用)。 事实上,当选择不同的属性时,FORMS会在主数据块中,自动创建两个触发器 ON-POPULATE-DETAILS:当插入主数据块记录时,自动将主键赋值给从数据块外键字段。 ON-CHECK-DELETE-MASTER:实现从删除主数据块记录时,从数据块要执行何种操作。

4、设置主键及报FRM-30100错误。 ①如果数据块属性设成使用主键,那么该数据块的ITEM必须有一个设成主键,否则报FRM-30100错误。 ②即使数据块设成不使用主键。但该块的查询数据源名称与DML数据目标名称不一致时,也是必须设至少一个ITEM为主键。否则报FRM-30100错误。如图:

40c66df50529625ad9da201e75c7b2a1.png

注:查询数据源与DML数据目标不一致时,数据INSERT、UPDATE、DELETE都会发生在DML数据目标那张表。 例如:以视图为查询数据源,而在数据表中仅保留ID。而查询时,自动匹配查询到相应的number、description 将视图的字段设置如下,否则会报无法找到这个字段之错误。

19040f1f323279224b6c7b17c5920fd5.png

5、主键赋值。 按数据库设计模式范式要求,每张表都应该有一个PRIMARY KEY。而且此字段一般不让用户操作,由sequence自动维护。我们可以数据块的PRE-INSERT触发器中加入代码:

select hek_test_sq.nextval into :hek_test_headers.hid from dual;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值