客户化Form中实现行号功能

在客户化Form开发中,经常会遇到需要给表格的记录块添加一个行号,行号不但作为数据行的一个序号,同时经常被作为单击的行标识,具有比较重要的业务意义。

form_line_num

这个行号的特点是:

  1. 新增行时自动生成默认行号:已有的最大行号+1
  2. 用户可以修改行号为合法的数字:大于0;保证唯一
  3. 如果用户修改了行号,新增生成的行号必须在用户修改行号的基础上+1

 

 

实现这样的行号相对比较麻烦,下面描述如何来实现上图中所示的行号功能:

  1. 在记录块的PRE-QUERY中查询出数据库中已有的最大行号,并将其记录到参数中作为最大的行号,如果单据的头是新建的,那这个参数默认的最大值则为1
  2. 在行记录的WHEN-CREATE-RECORD中将最大行号的参数值+1赋给行号字段
  3. 行号数据项的WHEN-VALIDATE-ITEM中检查行号是否<0;同时检查行号在数据库中是否存在(对于同时录入多行相同的行号在这个触发器中无需处理)
  4. 在WHEN-NEW-RECORD-INSTANCE中检查如果块的状态是NEW,从数据库中获取最大的行号,并设置行号
  5. 在WHEN-VALIDATE-RECORD中判断当前的行号是否大于参数中的最大行号,如果是则覆盖参数的最大行号

下面是将上面的代码按照HANDLER机制包装为LINE_NUM过程的列子:

  

各触发器的HANDLER:

 

添加一个MAX_LINE_NUM(NUMBER)的参数来保存当前最大行号的值

转载自:http://oracleseeker.com/2009/08/18/add_automatic_increase_line_number_functionality_in_oracle_ebs_form/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值