性检查的简单快捷方法(利用Post方法和Timer)

王朝other·作者佚名  2008-05-19
宽屏版  字体: |||超大  

1 前言

唯一值检查,在许多人眼中是一个简单而又不能再简单的问题,但是FORMS中,由于OracleD

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_Count0 Then

Message('字段输入重复值');

Raise Form_Trigger_Failure;

End If;

End;

点击此处下载armok01118800.rar

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有