OracleForm重复记录校验方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Form界面校验重复记录(Duplicate Record)?? 2010-10-12 12:09:43|??分类: EBS Form |??标签: |字号大中小?订阅 ?? ? ? 有时候为了更好的User体验,我们可能要在输入完一条记录之后就验证它是否录入重复,而不是在保存的时候才提示Duplicate Record Error。实现基于的前提是多行Block,User一进画面即是查询出所有相关记录,同EBS中实现标准汇总功能的条件。 ?? ? ? 下面是一个很好的例子,作者提到 ?? ?而实际上,我们往往被要求实现在界面上录数据的时候就体现DB的Duplicate Rocord验证。User可能进行Clear_Record操作然后再录入数据,这样如果直接引用作者的方法就会有问题,因为用Form本身的Summary Item实现的SUM只能将当前画面中的数据计入SUM,或许使用作者的方法结合APP_CALCULATE.RUNNING_TOTAL可以实现完整的功能,有时间测试一下能否结合使用。 ---------------------------------------------------------------------------------------------------------------------------------------------------- 以下摘自? 1.?????? 建议唯一索引。 2.?????? 在保存时,取数据库中的值进行校验。 3.?????? 在某个触发事务处理的按钮上循环整个块,根据数据库中的值进行重复校验。? 使用唯一索引和保存时校验都是同样的道理,只是一个是数据库自身验证,一个是客户化的代码来进行验证。但是我们假设:这个多行块拥有较多的字段,或者是存在较多的dependent item关联,那么使用者在录入多行数据后,提示重复,会让使用者感到非常不爽。 而循环块的方式更加不好,性能差(需要触发大量的触发器),且当数据较多时光标明显的闪烁感,在此,我们提供一个在某些情况下性能较好,且客户体验较好的方法,感谢 Kevin D Clarke 的思路。当是也许你有特殊的需求,数据库中可能是存在重复的,但是在进行某种事务的时候必须要求唯一,那么你恐怕就只能采用第三种方法了。 这里做了个非常简单的例子,假设行号和物料加起来是需要进行唯一验证的,下面是效果图: 下面我们就来讲解,如何来实现它。如下图你需要准备一下的块和ITEM还有触发器: Block的属性: ?? ? ? ? ? ? Block Name ? ? ? ? ? ? DUPBLOCK ?? ? ? ? ? ? ? Query All Records ? ? ?Yes ?? ? ? ? ? ? ?? ?? ? ? ? ? ? ? Block Name ? ? ? ? ? ? CONTROL ?? ? ? ? ? ? ??Query All Records ? ? ?Yes ?? ? ? ? ? ? ? Single Record ? ? ? ? ?Yes ?? ? ? ? ? ? ? Database Data Block ? ?No Item的属性 COUNT_ITEM (Data Type:Number): ???FLAG(Data Type:Number): ???PRE_DATA :普通的char型item即可 其中FLAG中Formula的值为: cux_com(:contorl.pre_data,:dupblock.line_number||:dupblock.item_number) ?这个表达式中的cux_com是一个Form中的function具体为:(在程序单元里自己加函数) FUNCTION cux_com(str1 varchar2,str2 varchar2) RETURN number IS l_return number:=0; BEGIN IF str1 = str2 then l_return := 1; else l_return := 0; end if; return l_return; END; 添加DUPBLOCK的when_validate_record触发器,触发器中的代码为: :contorl.pre_data := :dupblock.line_number||:dupblock.item_number; if :contorl.count_item 1 then message(存在重复数据!); --fnd_message.debug(存在重复数据!); raise form_trigger_failur

文档评论(0)

zefm2pj7 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档