ITPub博客

首页 > 数据库 > Oracle > EBS开发笔记-1

EBS开发笔记-1

原创 Oracle 作者:freshairpeng 时间:2014-05-04 16:06:30 0 删除 编辑
1:判断数据块的项是否为空
IF :BlockName.Item1 is null
THEN message(?Item1为空‘);
END IF; 这个和一般的编程语言使用字符串比较很不一致,但从PL/SQL的语句来看,却也是正常的。

2:信息提示框之基本用法
 1、message Usage:message('提示信息'); Effect:在FORMS左下角会出现这个提示信息。
2、fnd_message用法大全
    2.1 FND_Message.Debug Usage::fnd_message.debug('提示信息');
          Effect:会直接弹出一个对话框,与vb中的msgbox("提示信息")类似。
    2.2、fnd_message.question . Usage:
       declare v_num number;
        begin FND_MESSAGE.SET_STRING('确要执行此操作吗?');                
          v_num := FND_MESSAGE.QUESTION('否', '是',NULL, 1,2);
           if v_num=2 then fnd_message.debug('选择了是');
           elsif v_num=1 then fnd_message.debug('选择了否');
           end if;
          end;
          Effect: Effect:会直接弹出一个选择框,与vb中的msgbox("提示信息",vbokcancel)类似。
    2.3、FND_MESSAGE.show 这是一个Procedure,把信息以最基本的方式显示给用户,和FND_MESSAGE.DEBUG一样的效果。但分成了两步来写。
           begin fnd_message.set_string('show a string!);
           fnd_message.show;
           end;
     2.4、FND_MESSAGE.hint 这是一个Procedure这种方式不会弹出对话框给用户,而是显示在左下脚的状态栏上面。
     2.5、FND_MESSAGE.error 这是一个Procedure以Error信息的方式显示给用户
  3: 用代码控制ITEM属性
    1、用代码控制ITEM的可用性。
   1.1、SET_ITEM_PROPERTY和SET_ITEM_INSTANCE_PROPERTY:  
     如果是控制单行记录或者多行记录中的全部记录:SET_ITEM_PROPERTY
     如果是控制多行记录中的单一行记录:SET_ITEM_INSTANCE_PROPERTY
   1.2、理解它们的最好区别就是亲自动手写一例子。
    例: ①控制数据块T_TEST(多条记录)的ITEM的某一条记录是否可更改。
       SET_ITEM_INSTANCE_PROPERTY(?T_TEST.TID‘, CURRENT_RECORD,UPDATE_ALLOWED,PROPERTY_FALSE);
      SET_ITEM_INSTANCE_PROPERTY('T_TEST.TID', CURRENT_RECORD,INSERT_ALLOWED,PROPERTY_FALSE);
     Effect:
   ③ 控制数据块T_TEST(多条记录)的单个ITEM的全部记录是否可更改。
      SET_ITEM_PROPERTY('T_TEST.TID',ENABLED,PROPERTY_FALSE);--ITEM不可获得焦点
      或:
      SET_ITEM_PROPERTY('T_TEST.TID‘,INSERT_ALLOWED,PROPERTY_FALSE);
     -- ITEM可以获得焦点 SET_ITEM_PROPERTY('T_TEST.TID',UPDATE_ALLOWED,PROPERTY_FALSE);
    /* 如果此时使用SET_ITEM_INSTANCE_PROPERTY进行更改可用状态,必须先使用SET_ITEM_PROPERTY改回可写属性,之后方可使用SET_ITEM_INSTANCE_PROPERTY。
    ③控制数据块某个ITEM只允许insert,不允许delete.
     在when-new-form-instance中加入
    --先将数据块设为不可删除 set_block_property('T_TEST ',delete_allowed,property_false);
    --然后对ITEM设为不可update set_item_property(' T_TEST .TID',update_allowed,property_false);
    2、用代码控制ITEM的可见性 SET_ITEM_PROPERTY('CONTROL.ITEM1', ENABLED, PROPERTY_FALSE);
 4:实现将LOV可以自行录入内容
     在WHEN-NEW-ITEM-INSTANCE触发器加入
    begin
      set_item_property('block.item1', VALIDATE_FROM_LIST, property_false);
     end;
  5: 在FORMS调用WEB页面
     web.show_document('http://www.sina.com.cn','_blank'); 第二参数为页面的加载方式,有四种选择。
     _SELF
     _PARENT
    _TOP
    _BLANK
    Effect:自己可以去show一下,印象会比较深。
  6:Forms数据提交的方式
     1、commit_form 先针对form上面的数据变动进行commit,然后对于代码中的类似DML语句也进行提交; 如果form上面的数据变动和代码中的数据变动有冲突,最后以FORM上的为        准。 适用:一般来在直接修改Form上的数据时,就使用commit_form。
    2、commit 对form和数据库进行提交。如果form上面的数据和代码中的数据变动有冲突,最后以FORM上的为准。 适用:一般来在直接使用DML代码修改数据时,就使用commit。
    3、do_key('commit_form') 会首先寻找form下的triggers中的KEY-COMMIT这个trigger,并执行KEY-COMMIT中所写的代码。 如果没有KEY-COMMIT这个trigger,则会针对form和代码
     一起提交。 如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。 适用:只是更改了一下代码执行的任先顺序,没有什么实质区别。
    4、forms_ddl('commit') 只针对代码中的update,insert,delete语句进行提交。如果form上面的数据有变动,是不会提交的。 适用:一般不用。

  7: 初始化操作
   fnd_global.apps_initialize(fnd_profile.value('USER_ID'),fnd_profile('RESP_ID'),fnd_profile('RESP_APPL_ID'));
   因为有的试图资料是会通过user_id,resp_id,resp_appl_id来过滤的,所以在when-new-form-instance的时候,需要通过apps_initialize来进行初始化。  

   8: 设置窗体的位置 
    app_window.set_window_position('OPEN_CANVAS','CENTER','OPEN_WINDOW‘);
 
 

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

下一篇: EBS开发环境搭建
请登录后发表评论 登录
全部评论

注册时间:2009-02-25

  • 博文量
    69
  • 访问量
    246463