- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 海底两万里读书分享PPT课件.pptx VIP
- 呼吸衰竭和急性呼吸窘迫综合征患者的护理.pptx VIP
- 输血试题及答案.docx VIP
- 一种固态变压器.pdf VIP
- AI训练师复习测试卷含答案(二).doc
- 2025支撑可调节装配式地面辐射供暖系统应用技术规程.docx VIP
- 机械搅拌澄清池操作说明.doc VIP
- 临床护理实践指南2024版.pdf VIP
- T_CACE 057—2022_电石渣基氢氧化钙脱硫剂分析方法.pdf VIP
- 急性缺血性卒中血管内治疗中国指南2018中国卒中学会、中国卒中学会神经介入分会、中华预防医学会卒中预防与控制专业委员会介入学组(发布时间:2018-07).pdf VIP
文档评论(0)