【ERP】利用内建对象RecordGroup做重复性验证
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【ERP】利用内建对象RecordGroup做重复性验证,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3136字,纯文字阅读大概需要5分钟。
内容图文
![【ERP】利用内建对象RecordGroup做重复性验证](/upload/InfoBanner/zyjiaocheng/552/445295a4cb294533b460db3fa62c057f.jpg)
在开发Oracle forms的过程中,唯一性验证及重复性验证时是最基本的form验证功能之一了。通常情况下,通过为基表创建唯一性索引的
背景描述
在开发Oracle forms的过程中,唯一性验证及重复性验证时是最基本的form验证功能之一了。通常情况下,通过为基表创建唯一性索引的方式来达到唯一性验证已经可以满足日常开发的要求。但是,不免会有特殊的行为和需求唯一性索引的方式还是搞不定的,比如一条记录中的两个字段的值取自相同的数据来源,但是他们彼此之间以及记录与记录之间都不能允许有重复。
幸运的是,对于特殊的情况,开发者们也有很多解决方案加以应对,比如利用PL/SQL的内建数组来存储每一次录入的需要做验证的值,在验证时迭代所有数组中的值去做重复性验证。甚至你也可以利用字符串来存取单一的一个值的集合来做同样的事情,虽然我本人并不推荐使用这种方式;) 。
总结起来大概有这么几种:
如果还有请帮我补充;)
记录组(Record Group)
在开发实践中我们发现,在Oracle forms内部已经提供了一种内建的类似于数组的对象Record Group,我想提起他来大家肯定都不陌生~ 是啊,这有什么好惊讶的?我们在创建LOV的时候不是经常用到它吗。。。但是,Oracle也提供了一系列的内建API来帮助我们动态创建、删除和操作记录组以及记录组中的元素,,而且可以以二维的形式存储多行数据。因此这个记录组对象就可以以编程的方式为我们所用。
相比其他的方式,我认为使用记录组的方式有如下优点:
如果还有请帮我补充;)
API简介
下面就简要介绍一下能够对我们的验证所用的API函数定义,详细的说明和文档请参考Oracle Forms Builder的帮助文档。
一个简单的例子
下面就举一个简单的例子来说明这些API如何使用,图我就不上了,默认你们对form开发已经很熟悉啦,:)
假设form中有一个多行数据块REPLIST,现在我们要对该数据块的REPORT_ID字段做界面唯一性验证。
1. 向FORM级别的触发器WHEN-NEW-FORM-INSTANCE加入如下代码:
2. 向数据块REPLIST添加块级触发器PRE-QUERY,添加代码如下:
3. 向数据块REPLIST添加块级触发器WHEN-REMOVE-RECORD,添加代码如下:
4. 向数据块REPLIST添加块级触发器WHEN-CREATE-RECORD,添加代码如下:
5. 向数据块REPLIST添加块级触发器POST-QUERY,添加代码如下:
6. 向数据块REPLIST的REPORT_ID项添加ITEM级触发器WHEN-VALIDATE-ITEM,添加代码如下:
OK,大功告成了,界面上的验证部分就此告一段落,另外我们还要结合界面和数据库两个层面进行充分的验证,因为并不是所有的记录都显示在了界面上。
程序包zz_record_group
虽然内建的API已经很简洁了,但是某些操作为了简化API和验证需要在每次调用api之前做,很麻烦,故而本人干脆直接写了一个方便同学们(包括我自己)易于使用的通用程序包ZZ_RECORD_GROUP,该程序包有如下特点:
我已经将它发布到了github上了,有兴趣的同学可以去瞧瞧;)
传送门:https://github.com/eliu/zz_record_group
感谢以下文章对笔者的启发,Thanks!
Enjoy!
内容总结
以上是互联网集市为您收集整理的【ERP】利用内建对象RecordGroup做重复性验证全部内容,希望文章能够帮你解决【ERP】利用内建对象RecordGroup做重复性验证所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。