oracle form重复记录校验方法

oracle form重复记录校验方法

ID:11069608

大小:119.50 KB

页数:4页

时间:2018-07-09

oracle form重复记录校验方法_第1页
oracle form重复记录校验方法_第2页
oracle form重复记录校验方法_第3页
oracle form重复记录校验方法_第4页
资源描述:

《oracle form重复记录校验方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Form界面校验重复记录(DuplicateRecord)  2010-10-1212:09:43

2、  分类:EBSForm

3、  标签:

4、字号大中小 订阅    有时候为了更好的User体验,我们可能要在输入完一条记录之后就验证它是否录入重复,而不是在保存的时候才提示DuplicateRecordError。实现基于的前提是多行Block,User一进画面即是查询出所有相关记录,同EBS中实现标准汇总功能的条件。    下面是一个很好的例子,作者提到“当是也许你有特殊的需求,数据库中可能是存在重复的,但是在进行某种事务的时候必须要求唯一”

5、,声明了文章只是实现上述条件下的功能。   而实际上,我们往往被要求实现在界面上录数据的时候就体现DB的DuplicateRocord验证。User可能进行Clear_Record操作然后再录入数据,这样如果直接引用作者的方法就会有问题,因为用Form本身的SummaryItem实现的SUM只能将当前画面中的数据计入SUM,或许使用作者的方法结合APP_CALCULATE.RUNNING_TOTAL可以实现完整的功能,有时间测试一下能否结合使用。-----------------------------------------------

6、-----------------------------------------------------------------------------------------------------以下摘自 在一个多行的BLOCK中如果需要去校验一个重复记录,以往我们有一下三种做法:1.      建议唯一索引。2.      在保存时,取数据库中的值进行校验。3.      在某个触发事务处理的按钮上循环整个块,根据数据库中的值进行重复校验。 使用唯一索引和保存时校验都是同样的道理,只是一个是数据库自身验证,一个是客户化的代码来进行

7、验证。但是我们假设:这个多行块拥有较多的字段,或者是存在较多的dependentitem关联,那么使用者在录入多行数据后,提示重复,会让使用者感到非常不爽。而循环块的方式更加不好,性能差(需要触发大量的触发器),且当数据较多时光标明显的闪烁感,在此,我们提供一个在某些情况下性能较好,且客户体验较好的方法,感谢KevinDClarke的思路。当是也许你有特殊的需求,数据库中可能是存在重复的,但是在进行某种事务的时候必须要求唯一,那么你恐怕就只能采用第三种方法了。这里做了个非常简单的例子,假设行号和物料加起来是需要进行唯一验证的,下面是效果图

8、:下面我们就来讲解,如何来实现它。如下图你需要准备一下的块和ITEM还有触发器:Block的属性:       BlockName      DUPBLOCK        QueryAllRecords   Yes                 BlockName      CONTROL         QueryAllRecords   Yes        SingleRecord     Yes        DatabaseDataBlock  NoItem的属性COUNT_ITEM(DataType:Number):   

9、FLAG(DataType:Number):   PRE_DATA:普通的char型item即可其中FLAG中Formula的值为:cux_com(:contorl.pre_data,:dupblock.line_number

10、

11、:dupblock.item_number) 这个表达式中的cux_com是一个Form中的function具体为:(在程序单元里自己加函数)FUNCTIONcux_com(str1varchar2,str2varchar2)RETURNnumberISl_returnnumber:=0;BEGINIFstr1=

12、str2thenl_return:=1;elsel_return:=0;endif;returnl_return;END;添加DUPBLOCK的when_validate_record触发器,触发器中的代码为::contorl.pre_data:=:dupblock.line_number

13、

14、:dupblock.item_number;if:contorl.count_item>1thenmessage('存在重复数据!');--fnd_message.debug('存在重复数据!');raiseform_trigger_failure;

15、endif;到这里就完成了。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。