Chinaunix首页 | 论坛 | 博客
  • 博客访问: 771997
  • 博文数量: 803
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 10:29
文章分类

全部博文(803)

文章存档

2011年(1)

2008年(802)

我的朋友

分类:

2008-10-29 11:37:55


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

--------------------next---------------------

阅读(347) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~