ITPub博客

首页 > 数据库 > Oracle > About CLEAR_BLOCK(NO_VALIDATE);

About CLEAR_BLOCK(NO_VALIDATE);

原创 Oracle 作者:YoungEric 时间:2007-09-21 14:45:16 0 删除 编辑

p.s http://www.itpub.net/28962.html

http://hi.baidu.com/huitonet/blog/item/e238a3d3d7d50534970a1694.html

[@more@]高人请指点:FORM45中CLEAR_BLOCK如何不提示存盘?

高人请指点:FORM45中CLEAR_BLOCK如何不提示存盘?
思路如下:使用查询从几个表中查询出初步需要的信息,插入基于
基表的块中,再根据其他条件判断该记录是否需要保存,
IF NOT THEN CLEAR_BLOCK,这是提示我是否保存更改的
信息。这时是不需要保存的,为此想将该信息屏蔽掉。
1):SYSTEM_MESSAGE_LEVLE:='25';--》无效,仍然提示
2)clear_block(no_commit);--》无效;
3)clear_block(no_validate);--》无效。
请指教:该如何不让它显示该信息?
说明:form 为一无基表块,从事必要系统信息(如sequence值)的显示,
该信息在form运行期间一直保持不变。二基表块定义为主从结构,
无论清除主块,还是清除从块后再清除主块均会显示提示

我不是高手,以前用过一下D2K

我觉得使用clear_block(no_validate);足以解决上述问题的。
可能你在使用该语句时导航在别的块。
先go_block到主块再做。如果没设主从关系为cascade,再go_block去从块清一下。
我也认为clear_block(no_validate)应该行。
if still not working, maybe you can try clear_form(no_validate).
主从块再clear_block如何不显示“是否存盘”的提示。

当建立主从块时,FORM45回自动生成三个procedure,当CLEAR_BLOCK时,
不管使用那种清除方式,系统都要调用clear_all_master_details.由于
clear_all_master_details中调用clear_block(ask_commit),所以总会
显示是否存盘的提示信息.因此解决此问题的方法就是将clear_all_master
_details中的clear_block(ask_commit) 改为clear_block(no_commit)
或clear_block(no_validate).在解决此问题是,我昨天搜索到jlandzpa
的贴子,从中找到了答案,在此对他表示感谢!并对所有关心的朋友
表示感谢!

1、 CLEAR_BLOCK

说明:

Oracle Forms中删除当前的记录或删除当前块。.

语法:

PROCEDURE CLEAR_BLOCK;

PROCEDURE CLEAR_BLOCK

(commit_mode NUMBER);

内置函数类型 受限过程

输入值 NO

参数:

如果用户要从当前数据块中改变记录,将不需要提交。Oracle Forms会处理记录,下面各项将列出commit_mode的有效值:

commit_mode 可选参数commit_mode可以有下列常量值:

ASK_COMMIT Oracle Forms将提示用户在CLEAR_BLOCK处理时提交改变。

DO_COMMIT Oracle Forms提交改变执行commit,,并清理当前块。

NO_COMMIT Oracle Forms将提交改变并清理当前块,但不执行者Commit或激活用户。

NO_VALIDATE Oracle Forms将清理当前块,但不提交或执行改变、或激活当前用户。

示例:

1

BEGIN

IF :Emp.Empno IS NOT NULL THEN

:Global.Employee_Id := :Emp.Empno;

Clear_Block(No_Validate);

END IF;

END;

向版主反映这个帖子

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10484922/viewspace-970806/,如需转载,请注明出处,否则将追究法律责任。

下一篇: :system.form_status
请登录后发表评论 登录
全部评论

注册时间:2007-12-18

  • 博文量
    79
  • 访问量
    211175