Oracle的Developer工具已经升级到9i、10g,但EBS中使用的Forms Server和Forms Builder版本还是6i,今后的开发将逐步转移到Java,Oracle将来也不会在EBS中使用高于6i的Forms。

 

Ebs的Form肯定还是离不开的啦,这里分享几个开发小技巧!

其中,Mspping of Other Values 这个属性,他的意思是,

从数据库中读出来的数据,不在这个列表内(这里是I和E),那么要映射为I还是E,如果不映射,那么该条记录将无法在Form中显示出来,表现出来的现象就是“数据库和View中明明有,界面却看不到”

删除List中的条目,使用Ctrl+Shift+<删除快捷键

  1. LOV 注意事项:

不管是自动选择还是手工选择,只有“选择”了,才会触发LOV中各列的值返回给对
应的目标Item;而不验证的LOV就要注意了,因为其可能没有经过“选择”这一步。

LOV还有个麻烦的问题,如果清空了Item的值,因为空值不触发验证,这样之前返回
到各个目标Item上的值并没有自动被清空,需要写代码处理。

  1. 字段和记录的控制

字段的控制,最常见的就是默认值、是否必需、是否可以更新、是否可以F11查询。其
他的都可以顾名思义,可直接看各个属性。

字段控制实例:

Customer、Sales Person、Price List在状态为非“Entered”的情况下,才不可更新
的,这需要用代码实现。在Block的WHEN-NEW-RECORD-INSTANCE触发器中写入
下代码,最好写成program unit:

if :ORDER_HEADERS.FLOW_STATUS_CODE = 'ENTERED' then
app_item_property.set_property('ORDER_HEADERS.CUSTOMER_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);
app_item_property.set_property('ORDER_HEADERS.SALESREP_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);
app_item_property.set_property('ORDER_HEADERS.PRICE_LIST_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);
else
app_item_property.set_property('ORDER_HEADERS.CUSTOMER_NAME',UPDATE_ALLOWED,PROPERTY_FALSE);
app_item_property.set_property('ORDER_HEADERS.SALESREP_NAME',UPDATE_ALLOWED,PROPERTY_FALSE);
app_item_property.set_property('ORDER_HEADERS.PRICE_LIST_NAME',UPDATE_ALLOWED,PROPERTY_FALSE);
end if

 

记录的控制,最常见就是显示条数、是否可增/删/改/查、是否可以F11查询、是否显
示滚动条。
本例需要实现,在状态为非“Entered”的情况下,记录不可删除,这样需
要在Block的WHEN-NEW-RECORD-INSTANCE触发器中追加代码(红色部分),最
好写成program unit:

if :ORDER_HEADERS.FLOW_STATUS_CODE = 'ENTERED' then
app_item_property.set_property('ORDER_HEADERS.CUSTOMER_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);
app_item_property.set_property('ORDER_HEADERS.SALESREP_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);
app_item_property.set_property('ORDER_HEADERS.PRICE_LIST_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);
set_block_property('ORDER_HEADERS',DELETE_ALLOWED,PROPERTY_TRUE);
else
app_item_property.set_property('ORDER_HEADERS.CUSTOMER_NAME',UPDATE_ALLOWED,PROPERTY_FALSE);
app_item_property.set_property('ORDER_HEADERS.SALESREP_NAME',UPDATE_ALLOWED,PROPERTY_FALSE);
app_item_property.set_property('ORDER_HEADERS.PRICE_LIST_NAME',UPDATE_ALLOWED,PROPERTY_FALSE);
set_block_property('ORDER_HEADERS',DELETE_ALLOWED,PROPERTY_FALSE);
end if;
  1. 日历控件

1、 编写Item的KEY-LISTVAL触发器:calendar.show;
2、 设置Item的List of Values属性:ENABLE_LIST_LAMP
3、 设置Item的Validate from List属性:No

发表回复

您的电子邮箱地址不会被公开。