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‘);
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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14766526/viewspace-1153566/