前言 唯一值检查在许多人眼中是一个简单而又不能再简单的问题但是FORMS中由于OracleD eveloper体系架构的问题成为开发人员的一块心病 当然进行唯一值检查的方式多种多样包括对数据块的轮询或利用表变量实现但这些方 法都有相同的弊病=>效率低下和实现方法过于繁杂 本文利用FORMS的POST命令和后台Select Count语句实现唯一值检查为各位同仁提供多一种选择的余地 技术要点 POST POST命令间将前台的数据传到后台但是不进行COMMIT动作由于在同一个SEASON所以Select Count语句可以对未Commit_form的数据进行检查 受限过程的解决方法 由于POST是受限过程无法在BLOCK的When_Valid_Record中使用本文利用Timer实现POST过程 即When_Valid_Record创建Timer由Timer执行POST的动作 Select Count 此语句不必多说就是判断某数据是否重复 实例参考 创建数据表 create table TESTCHECKUNIQUE ( T VARCHAR() Primary Key T VARCHAR() ); 设定T为要检查的唯一值 FORMS 创建表级的When_Timer_Expired对数据进行POST动作 Declare Begin IF Upper(Get_Application_Property(TIMER_NAME)) = Upper(Timer_Post) THEN Post; END IF; End; 创建数据块级的When_Valid_Record创建Timer Declare Timer_Post Timer; Begin Timer_Post:=Create_Timer(Timer_Post NO_REPEAT); End; 创建数据项级的When_Valid_Item对数据进行检查性检查 Declare L_Count Number; Begin Select Count() Into L_Count From TestCheckUnique Where T=:TestCheckUniqueT; If L_Count> Then Message(字段输入重复值); Raise Form_Trigger_Failure; End If; End; 点击此处下载armokrar |