您的位置:首页 > 产品设计 > UI/UE

使用Form Builder创建Form具体步骤

2014-06-26 15:59 375 查看
使用Oracle Form Builder创建Form具体步骤

(Data SourceTable)

说明:当Block使用的Data Source为Table时,Form会自动Insert,Update,Delete,Lock。若要显示non-database Item,需在POST-QUERY Trigger 里手动写代码来为non-database Item取值。

步驟一:分析需求设计Table架构

1). Table需指定一Unique ID,可为其创建Unique Index,在Form里通过Sequence 为其赋值。

2). Table和Sequence 创建在指定客制Owner下 (如CUX) 。

3). 命名规则:XX+模组名称开头,Sequence名在Table名后加“_S”

如Table名:CUX.XXPO_PO_HEADERS

Sequence名:CUX.XXPO_PO_LINES_S

4). Table要有以下5个栏位(参考系统标准表):

  CREATED_BY

  CREATION_DATE

  LAST_UPDATED_BY

  LAST_UPDATE_DATE

  LAST_UPDATE_LOGIN

5). 在APPS下为客制Owner (如CUX) 的Table和Sequence创建Synonym (同义词) 。

步驟二:套用Form模板TEMPLATE.fmb

1). 将Template File开启并并另存新档 (可放在不同目录) 。

2). 将模板提供的空Block、Canvas和Window删除 (名称为BLOCKNAME和DETAILBLOCK) 。

步驟三:建立Block、Window、Canvas
、LOV

1). 新建Data Block (建议先手动新增,重命名后再使用Data Block Wizard创建)

可与Table名相同,如名称为:XXPO_PO_HEADERS

2). 新建Window、Canvas (建议先手动新增,重命名后再使用Layout Wizard创建)

建议Window和Canvas的名称与对应Block一样。

3). 将Canvas对应的视窗指定到Canvas的Window属性。

4). 将Window的Primary Canvas属性指定对应的Content Canvas。

5). 使用Date Block
Wizard创建Data Block

6). 使用Layout
Wizard创建Window、Canvas

7). 新建LOV (建议先手动新增,重命名后再使用LOV Wizard创建)

8). 将所有物件套用Subclass
(Item: 要显示在Canvas上的Item套用即可)。

9). 建立INDICATOR栏位,套用Subclass:
CURRENT_RECORD_INDICATOR。

10). 设置Window的Title属性,用于显示视窗左上角的标题。

步驟四:修改必要属性及代码设置

1). 设置Form的First Navigation Data Block属性为第一个要开启的Data Block

如:XXPO_PO_HEADERS

2). 在Form Trigger:PRE-FORM 修改

app_window.set_window_position('<First_Window>',
'FIRST_WINDOW');

如app_window.set_window_position('XXPO_PO_HEADERS', 'FIRST_WINDOW');

3). 在Program Unit:APP_CUSTOM 修改Close_Window

if (wnd = '<First_Window>') then

app_window.close_first_window; …

如:if (wnd = ' XXPO_PO_HEADERS ') then …

步驟五:在系统打开Form 时让User选择Organization

1). 先決條件:先建立四個
Parameter:

  CHART_OF_ACCOUNTS_ID
(NUMBER)

  ORG_NAME
(CHAR 240)

  ORG_CODE
(CHAR 30)

  ORG_ID
(NUMBER)

2). 在Form的Trigger:PRE-FORM加入

Procedure:FND_ORG.CHOOSE_ORG;

3). 修改Window的Title属性为进入该视窗时左上角显示的标题:

在Block的WHEN-NEW-BLOCK-INSTANCE
Trigger 加入

如:app_window.set_title('XXPO_PO_HEADERS', :parameter.org_code);

4). 给ORGANIZATION_ID赋值:

在Block的Trigger:PRE-INSERT 写入

如::XXPO_PO_HEADERS.ORGANIZATION_ID
:= :parameter.org_id;

步驟六:使用Sequence为Table的Unique
ID
赋值

1). 在Block的Trigger:PRE-INSERT 写入以下程序

如:select XXPO_PO_HEADERS_S.NEXTVAL

into :XXPO_PO_HEADERS.XXPO_HEADER_ID

   from dual;

步驟七:给CREATED_BYLAST_UPDATED_BY等栏位赋值

方式有二:分前端、後端。

1). 前端:

在PRE-INSERT、PRE-UPDATE這兩個Block Trigger中,寫入:

Fnd_Standard.Set_Who;
即可。

2). 後端:

Fnd_Global.User_ID 即為取得建立者 or 異動者。

步驟八:日期型栏位使用日历

1). 將Data Field的List of Values屬性值設定為ENABLE_LIST_LAMP。

2). 將Data Field的Validate from List屬性值設定為No。

3). 在Data Field的KEY-LISTVAL Item Trigger(Override)中,寫入Calendar.show;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: