builder forms oracle 函数如何使用_Oracle EBS 之 Forms开发 一

1.      基于EBS的Forms开发过程

1.1    Form文件类型

.fmb:源文件,目前是二进制格式,也可以转成早期版本的ASCII格式

.fmx:可执行文件,类似VB的.exe文件,其也需要在Forms Runtime环境中运行

.pll:库函数源文件,类似所有开发语言的库函数,如VC的.cpp文件

.plx:库函数可执行文件

调用关系:fmb文件可以引用其他fmb文件、pll文件,pll文件可以进一步引用其他pll文件,引用是可以嵌套的。所以要成功打开一个forms源文件,必须保证其直接引用、间接引用的fmb、pll文件均存在。

怎样才叫“存在”呢?类似各种语言如C的Include Path或Java的Class Path,Forms也有一个参数——注册表FORMS60_PATH来指示引用的路径,只要需要的文件在该路径下即可。

1.2    Forms Builder安装

1.2.1    版本

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

可以从form下载,其包含在EBS for Windows版本的下载列表中。

1.2.2    oracle forms builder 安装配置

1.3      下载Template相关文件

0f9c8779bb1e

1.4    一个简单的例子

1.4.1    创建数据库对象

要求:表、序列、索引建在应用数据库用户下,表放在数据表空间中,索引放在索引表空间中;视图、包建在APPS下,表和序列需要在APPS下创建别名(同义词)。

1.4.2    注册表和字段

需要向EBS注册表和字段,这样以后就可通过标准功能设置弹性域、监控表操作。(调用包中专门的procedure注册表)

1.4.3    创建用于Form的View

Form可以直接基于基表,但对于复杂的表,则必需使用View,将各个ID转换为有意义的编码或者描述。

1.4.4    创建表操作API

不管是基于基表还是基于视图的Block,都建议编写ON-UPDATE、ON-INSERT、ON-DELETE、ON-LOCK触发器,并且,把具体的DML和锁记录代码放入数据库Package中,然后在Form中调用,该Package以后还可以在其他地方调用。这些设计,都是基于以往开发经验所归纳出来的,有利于模块化开发、有利于扩展。

PROCEDURE:  insert_row()    PROCEDURE:  lock_row()    PROCEDURE:  update_row()

PROCEDURE:  delete_row()

1.5 Form开发  ·  从模版开始设计

1.5.1    快速认识Forms Builder开发环境

1、 Object  Navigator,分层次的对象管理,常用的有:Triggers触发器、Data Blocks数据块(其下有Items字段、Triggers触发器)、Canvases画布、LOVs下拉列表、Parameters参数、Program Units程序单元、Record Group记录组、Windows窗体。这些对象可以通过左边红框标记的按钮进行添加、删除。

2、Property Palette,分类别的属性设置,主要属性后面用到再介绍。

3、Canvases,设计各字段在画布上的布局。

快捷键F4:选中Object  Navigator中的某个对象,F4可以调出Property  Palette。

4、Code Editor代码编辑器:编写PL/SQL代码的地方。

0f9c8779bb1e

1.5.2     拷贝TEMPLATE.fmb

拷贝TEMPLATE.fmb,改名为CUXORDENT.fmb,打开之后把Form Name也改为CUXORDENT,一定要保持一致性。

1.5.3    删除多余对象

删除拷贝过来的TEMPLATE.fmb文件中Data Blocks的两个块--BLOCKNAME,DETAILBLOCK。

它们是模版自带的示例主从块。

删除Canvases下的一个画布——BLOCKNAME。

1.5.4    修改Windows名称

修改Windows下的Window,在Property Palette中将Name改为“窗口名字”,将Title改为“显示的title名字”。(这个步骤可以放到后边)

1.5.5    修改2个触发器,1个程序单元

因为一个Forms有多个Window,所以需要明确指出哪个Window是主Window,这样在关闭主Window的时候将退出整个Forms;此外,我们也须要在源代码中记录作者、开发时间、版本等备注信息。这些是通过代码而非属性来控制的。

1、 修改Forms级触发器PRE-FORM

将其中app_window.set_window_position('BLOCKNAME', 'FIRST_WINDOW');改为app_window.set_window_position('你的window名字', 'FIRST_WINDOW');

同时修改上面几行代码中的作者、时间、版本、Form描述、应用简称,示例如下:FND_STANDARD.FORM_INFO('$Revision:1.0.0       $', 'Sales Order Form', 'SCF','$Date:2007/02/28 11:02  $', '$Author:huajhua$');

2、 修改Forms级触发器WHEN-NEW-FORM-INSTANCE主要修改Form名字、版本和日期。

3、 修改Program Unit下app_custom中的close_window过程将

if (wnd = '') thenapp_window.close_first_window;改为if(wnd='你的window名字') thenapp_window.close_first_window;

1.5.6     创建Block数据块

数据块,定义Form上的字段与数据库中的字段是如何对应的,同时定义块和字段的各种操作特性——字段类型、长度、默认值、可否增删改查等等。

N: 在Data Blocks上右键,选择数据块创建向导:

0f9c8779bb1e

之后第一步跳过,第二步保持默认的选择“Table or View”

第三步输入View名字CUX_ORDER_HEADERS_V,如果没有登录过,则会弹出登录框:

0f9c8779bb1e

登录后Available Column将显示所有视图字段,点击>>全部选过来。

第四步跳过,第五步选择“Just create the data block”后Finish。

Forms Builder将自动将表字段的名称、类型、长度、是否必须等信息带到Block下的Items中。

1.5.7     设置Block属性机器Subclass

设置块属性中的Subclass为Block:

0f9c8779bb1e

此外,需要设置块的前后导航属性,本例目前仅有一个有意义的数据块,这里将Previous和Next Navigation Data Block均设置为自身,这样在运行时,使用快捷键Shift+Pageup和Shift+Pagedown时,均不会跳离本块。

子类:类似Java中的子类,用来继承Item类型和各种属性,在开发过程中,要严格设置各种Item的子类,不得手工随意修改对象的属性,从而保持界面有一致的风格;设置过子类的对象,图标上有个红色的箭头。

1.5.8     设置Item属性及其Subclass

设置需要显示Item和特殊Item的子类,同时设置部分Item的默认值:

0f9c8779bb1e

1.5.9     创建Canvas画布

画布,用来设计各字段的布局,画布必需放置在Window上后才真正对用户“可见”。最基本的画布为Content画布,一个Window必需有且仅有一个Content画布。

N: 在Data Blocks上右键,选择布局创建向导:

0f9c8779bb1e

第一步选择New Canvas,Type选择Content:

0f9c8779bb1e

第二步选择要显示的字段:

0f9c8779bb1e

第三步修改各字段的提示和显示长度:

0f9c8779bb1e

后面两步跳过直至Finish。

在打开的画布设计界面,删除自动生成的Frame。

1.5.10     设置画布属性和子类、调整布局

1、设置画布名字为SALES_ORDER,放置的Window为SALES_ORDER,子类为Canvas:

0f9c8779bb1e

2、调整View和Canvas大小,Content画布这两者设置为一样大,即拉到重叠为止。

0f9c8779bb1e

Canvas与View:Canvas是整个画布的大小,Item是放置在Canvas上的;View是这个画布的可见部分,如果View小于Canvas,那么通常需要借助滚动条来查看整个Canvas中的内容;可以通过菜单View中的Show

View、Show Canvas来确定哪个框是Canvas哪个框是View。

1.5.11     调整布局

0f9c8779bb1e

1.5.12     调整prompt提示

Oracle标准的Form中,Form形式的布局,提示放置在字段左边,居中对齐,并且距离字段0.073;而Table形式的布局,提示放置在第一行字段上边,数字靠右,其他靠左,并分别距离字段边缘0.05。以ORDER_NUMBER为例设置如下(其他字段可以按住Ctrl一起选中,然后一次性设置。):

0f9c8779bb1e

1.5.13     设置windows属性

设置Window“SALES_ORDER”的Primary Canvas为“SALES_ORDER”,该Window的大小将自动调整为Content Canvas的大小:

0f9c8779bb1e

1.5.14     设置From属性

设置Form的第一个导航块为ORDER_HEADERS,这样运行时,一进入Form,光标将停在该块的第一个字段上:

0f9c8779bb1e

1.6    编写数据操作触发器

1.6.1    编写数据操作Program Unit

该Program Unit主要用来调用之前步骤创建的数据库API。

1、  选中对象管理器中的Program Unit,点击左边的+,选择Package Spec,在Name中输入ORDER_HEADERS_PRIVATE。

2、  OK后,输入如下包头代码。

3、 同1,选择Package Body,OK后输入如下包体代码,注意块字段的值的引用格式“:块名.字段名”。

4、编写完成后,点击PL/SQL Editor窗口顶上的Compile按钮,必须保证没有错误。

0f9c8779bb1e

1.6.2    编写块的On触发器

1、 选中Block“ORDER_HEADERS”下的Triggers,点击左边的+,选择ON-INSERT触发器:

0f9c8779bb1e

2、  OK后输入如下代码:

ORDER_HEADERS_PRIVATE.insert_row;

3、  同1,选择ON-LOCK后输入如下代码:

ORDER_HEADERS_PRIVATE.lock_row;

4、  同1,选择ON-UPDATE后输入如下代码:

ORDER_HEADERS_PRIVATE.update_row;

5、  同1,选择ON-DELETE后输入如下代码:

ORDER_HEADERS_PRIVATE.delete_row;

理解:对于基于非单表视图的Block来说,这里的4个触发器是必须要写的,具体代码可以直接写在触发器内,但为了模块化管理和今后维护方便,这里分为三层调用,触发器中调用Program  Unit中的过程,Program Unit中调用数据库Package中的过程。

1.7 上传与编译

通过FTP上传fmb文件,然后通过xshell编译。

编译命令:frmcmp_batch userid=apps/apps module=$AU_TOP/forms/ZHS/CUX_BOOK_CONTROLS.fmb module_type=form output_file=$FA_TOP/forms/ZHS/CUX_BOOK_CONTROLS.fmx

成功编译的话,最后一行将显示:

Created form file xxx.fmx

1.8 EBS中注册运行

1.8.1.        登录EBS

用至少需要有Application

Developer职责的用户登录,比如Sysadmin用户,然后选择Application Developer职责。

1.8.2        注册Form

0f9c8779bb1e

1、 这里的Form、源文件中Form名字、文件名三者要一致,这里是CUXORDENT。

2、 选择合适的Application,通常用企业的客户化应用,这里是SCF Customized System。

3、 User Form Name可以输入一个友好的名字,建议直接用Form名字。

1.8.3       定义Function

1、输入Function名字和Form名字一致,输入一个友好的名字SCF Sales Order。

0f9c8779bb1e

2、切换到Form标签页,选择刚才定义的Form后按Ctrl+S保存。

0f9c8779bb1e

1.8.4       加入Menu

假定我们用SCF Customized System Super User这个职责来测试,该职责对应的菜单为SCF_SUPER_USER。查出菜单SCF_SUPER_USER,在下面添加一行:

0f9c8779bb1e

1.8.5        运行Form

切换到SCF Customized

System Super User职责,选择Sales Order菜单,可以看到做好的Form:

0f9c8779bb1e

这个例子最重要,必需保证能够自己做出来。

陈子豪,一个已经步入社会的年轻人。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值