Oracle+form开放培训
- 格式:ppt
- 大小:795.00 KB
- 文档页数:24
oracle 二次开发----form篇1.一进页面就能看到表中已生成数据,而不用按ctrl+f11进行查询的语句:在form级的触发器when-new-form-instance中,写如下代码:go_block('XXXX');execute_query;要查询的数据块的名称说明:当使用基于表建立的块时,可使用块里的任何项的GO_BLOCK或者GO_ITEM找到那个块当查询数据到一个块里去,可通过execute_query进行处理补充:用DELETE_RECORD从块中删除当前记录,要改变数据库的记录,必须使用COMMIT_FORM------------------------------------------------------------------有什么办法可以控制form中File菜单中的Export吗?使其失效答:在FORM中,在FORM级的触发器EXPORT中,将其中的代码app_standard.event('EXPORT');屏蔽掉,改为null;试一试------------------------------------------------------------------菜单与函数安全性1.子函数命名的标准:--子函数命名如下<form>_<subfunction>例如: PO_POXPOMPO_DELETE--用户函数命名如下<FROM NAME>:<subfunction>例如:PURCHASE ORDERS:DELETE------------------------------------------------------------------2.添加选择到指定的菜单中添加15个指定的form-specific entries到每一个指定的菜单中:tools,reports,actionsCreate a Form-level, User-named Trigger for Each Entry-- The form-level user-named trigger must be called SPECIALn, where n is a numberfrom 1 to 45-- Tools menu includes SPECIAL1 to SPECIAL15-- Reports menu includes SPECIAL16 to SPECIAL30, and the menu name Reports can be changed-- Actions menu includes SPECIAL31 to SPECIAL45, and the menu name Actions can be changed当form 启动时,在pre-form触发器中instantiate你特定的菜单items调用 app_special.instantiate包procedure APP_SPECIAL.INSTANTIATE(option_name varchar2, --定义tigger 名字hint varchar2 default null,--定义菜单实体的名字,使用&来定义菜单实体的键盘快捷键icon varchar2 default null,--initially_enabledboolean default true,separator varchar2 default null);--定义'LINE'为separator例子app_special.instantiate(’SPECIAL1’,’&P rint Order’,’PRINTORD’);在tool 菜单中的check boxes--option_name 与trigger_name 包括关键字CHECKBOX(例如:SPECIAL3_CHECKBOX)app_special.instantiate(’SPECIAL3_CHECKBOX’,’Spe&cial 3 Box w Line’, ’’,TRUE,’LINE’);--调用app_special.set_checkbox 来初始化check box 的值app_special.set_checkbox(’SPECIAL3_CHECKBOX’,’TRUE’);--在SPECIALn_CHECKBOX函数中和相应的逻辑代码中测试check boxapp_special.get_checkboxif (app_special.get_checkbox(’SPECIAL3_CHECKBOX’)=’TRUE’) then fnd_message.debug(’Special 3 is True!’);elsefnd_message.debug(’Special 3 is False!’);end if;----------------------------------------------在你在pre-form 中instantiate实体,随意将指定的菜单实体设置为可用或不可用(基于数据块),调用APP_SPECIAL.ENABLEprocedure APP_SPECIAL.ENABLE(option_name varchar2,state);在form-level 中的pre-block trigger里面,将你的special 菜单的item 定义为disableapp_special.enable(’SPECIAL1’,PROPERTY_OFF);在form-level 中的pre-block trigger里面,将你的special 菜单的item 定义为ableapp_special.enable(’SPECIAL1’,PROPERTY_on);将所有的special 菜单设置为 disableapp_special.enable(’SPECIAL’,PROPERTY_OFF);------------------------------------------------------------------编辑鼠标右键菜单调用APP_POPUP.INSTANTIATE(block或者item层的PRE-POPUPMENU Trigger)procedure APP_POPUP.INSTANTIATE(option_name varchar2,txt varchar2,initially_enabled boolean default true,separator varchar2 default null);与app_special.instantiate类似例如:APP_POPUP.INSTANTIATE('POPUP1','First Entry');d)PRE-QUERY--If you don't do this, whatever query criteria you may enter in-- the concatenated flex field, it is not taken into account.FND_FLEX.EVENT('PRE-QUERY' );e)KEY-LISTVALAPP_STANDARD.EVENT('KEY-LISTVAL');FND_FLEX.EVENT('KEY-LISTVAL' );------------------------------------------------------------------关于 Implementing Zoom Use the Custom Library的学习:1. .pll文件可以用form builder 打开,修改,创建2. .pll文件的编译方法:f60gen module=CUTOM.PLL userid=apps/apps module_type=LIBRARY3. 当系统不自动激活菜单上的图标时,可以在数据块的 block-level 的when-new-block-instance trigger中添加如下代码:以zoom为例子:set_menu_item_property('VIEW.ZOOM',ENABLED,PROPERTY_TURE)在form-level 的相应的trigger(比如zoom trigger)中改写下列代码:custom.event('ZOOM')4. fnd_function.exrcute语法:procedure FND_FUNCTION.EXECUTE(function_name IN varchar2,open_flag IN varchar2 default ’Y’,session_flag IN varchar2 default ’SESSION’, other_params IN varchar2 default NULL,activate IN varchar2 default ’ACTIVATE’,browser_target IN varchar2 default NULL); 5.FND_FUNCTION.TEST(function_name IN varchar2)测试指定的函数是否可以连接,该函数用于form 启动时测试函数的可用性,对于‘INIT’的理解:Examine current conditions and reset defaults and dynamic attributes as necessary.Usually called by other handlers that affect this item.validate(参数); 使form执行基于参数范围的有效的过程.参数为:default_scope,form_scope,record_scope,item_scope------------------------------------------------------------------弹性域(Flexfields)的总结:使用 FND_KEY_FLEX.DEFINE 在item handler 中设定key弹性域的定义procedure flexfield_item_name(event varchar2)isbeginfnd_key_flex.define(block=>'block_name',field=>'concatenated_segements_field_name',id=>'ccid_field_name',appl_short_name=>'shortname_of_application_used_to_register_flexfield ',code=>'flexfield_code',NUM=>'structure_number',any_other_auguments);)例:FND_KEY_FLEX.DEFINE(BLOCK=>’LINES’,FIELD=>’ACCTG_FLEX_VALUES’,ID=>’GL_ACCOUNT_CC_ID’,--Your ID field is the GL_ACCOUNT_CC_ID item APPL_SHORT_NAME=>’SQLGL’,CODE=>’GL#’,NUM=>’101’--可以使用GL_SET_OF_BOOKS_ID 作为structure id);----------------------------------------------------------------------------------使用FND_DESCR_FLEX.DEFINE 在item handler 中设定描述性弹性域的定义定义FND_DESCR_FLEX.DEFINE(BLOCK=>'BLOCK_NAME',FIELD=>'DISPLAYED_FLEXFIELD_FIELD_NAME',APPL_SHORT_NAME=>'SHORTNAME_OF_APPLICATION_USED_TO_REGISTER_FLEXFIELD ',DESC_FLEX_NAME=>'FLEXFIELD_NAME',ANY_OTHER_ARGUMNTS);例FND_DESCR_FLEX.DEFINE(BLOCK=>’ORDERS’,FIELD=>’DESC_FLEX’,APPL_SHORT_NAME=>’DEM’,DESC_FLEX_NAME=>’DEM_ORDERS’);)----------------------------------------------------------COPY 命令Copies a value from one item or variable into another item or global variable.SyntaxPROCEDURE COPY(source VARCHAR2, destination VARCHAR2)Parameterssource: The source is a literal value.destination: The destination can be either a text item or another global variable.例:COPY( 'Yes', 'GLOBAL.'||global_var_name );将‘YES’付值给变量global_var_name弹性域说明:/*这里是原来的FND_KEY_FLEX.DEFINE(BLOCK=>'LINES',FIELD=>'ACCTG_FLEX_VALUES',ID=>'GL_ACCOUNT_CC_ID',APPL_SHORT_NAME=>'SQLGL',CODE=>'GL#',NUM=>'101');*//*按以下顺序*/1.先创建一个外键字段, id(指‘Unique_ID_field’)2.修改联合字段的LOV, database item , class properties属性.(指description_field_name)3.WHEN-NEW-FORM-INSTANCEcursor get_cao isselect to_char(id_flex_num)from fnd_id_flex_structureswhere id_flex_structure_code = 'ACCOUNTING_FLEXFIELD'and id_flex_code = 'GL#';v_cao varchar2(1000);...................open get_cao;fetch get_cao into v_cao;if get_cao%notfound thenv_cao := '101';end if;close get_cao;app_standard.event('WHEN-NEW-FORM-INSTANCE');fnd_key_flex.define(BLOCK=>'COMBO',FIELD=>'ACCOUNT_FLEXFIELD',APPL_SHORT_NAME=>'SQLGL',CODE=>'GL#',NUM=>v_cao,ID=>'CODE_COMBINATION_ID',DESCRIPTION=>'',TITLE=>' OK ',VALIDATE=>'FULL',QBE_IN=>'Y',DERIVE_ALWAYS=>'Y',updateable => '',VRULE=>'\\nSUMMARY_FLAG\\nI\\nAPPL=SQLGL;NAME=GL_NO_PARENT_SEGM ENT_ALLOWED\\nN',where_clause => 'summary_flag != ''Y''',QUERY_SECURITY =>'Y');4.在其他触发器中按如下处理‘WHEN-VALIDATE-ITEM’‘WHEN-NEW-ITEM-INSTANCE’‘POST-QUERY’‘PRE-QUERY ’‘KEY-LISTVAL’a)WHEN-VALIDATE-ITEMif ( :system.mode = 'NORMAL' ) thenfnd_flex.event( 'WHEN-VALIDATE-ITEM' );end if;b)WHEN-NEW-ITEM-INSTANCEapp_standard.event('WHEN-NEW-ITEM-INSTANCE');fnd_flex.event('WHEN-NEW-ITEM-INSTANCE' );c)POST-QUERYFND_FLEX.EVENT('POST-QUERY');message 用法总结:1.设置信息:--FND_MESSAGE.SET_NAME 语法:procedure FND_MESSAGE.SET_NAME(application_shortnameINvarchar2,message_name IN varchar2);作用:从Message Dictionary获取一条信息一般情况下在FORM中显示出错信息使用以下代码:FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;FND_MESSAGE.ERROR ;--FND_MESSAGE.RETRIEVE作用:取得一条数据库中的等待信息--FND_MESSAGE.SET_STRING (value IN varchar2)作用:将字符串放到消息栈中,--FND_MESSAGE.SET_TOKEN作用:用值替换message的信息中的变量语法:procedure FND_MESSAGE.SET_TOKEN(token_name IN VARCHAR2,value IN VARCHAR2translate IN boolean default FALSE);--在form用于显示信息的函数1.FND_MESSAGE.ERROR2.FND_MESSAGE.WARN例子Example:FND_MESSAGE.SET_NAME(’SQLAP’,’AP_PAY_MULTI_PAY_VOID’);REC_COUNT:= <NUMBER OF PAYMENTS>;FND_MESSAGE.SET_TOKEN(’NUM_OF_RECS’,REC_COUNT);IF (NOT FND_MESSAGE.WARN) THENRaise FORM_TRIGGER_FAILURE;END IF;3.FND_MESSAGE.QUESTION语法:FND_MESSAGE.QUESTION(button1 IN varchar2 default ‘YES’,button2 IN varchar2 default ‘NO’,button3 IN varchar2 default ‘CANCEL’;default_btn IN number default 1,cancel_btn IN number default 3,icon IN varchar2 default ‘question’) return number;说明:FND_MESSAGE.QUESTION 返回一个被选中的button的number Example:FND_MESSAGE.SET_NAME(’FND’,’ATCHMT-COMMIT BEFORE INVOKING’); IF FND_MESSAGE.QUESTION(’YES’,’CANCEL’,NULL,1,2,NULL) = 2 THENRAISE FORM_TRIGGER_FAILURE;END IF;4.FND_MESSAGE.SHOW作用:显示信息5.FND_MESSAGE.DEBUG6.FND_MESSAGE.GET作用:取得在message中设置好的message信息设置Item-level和Item-instance-level属性时需特别的注意,Item-level属性影响所有的记录,而Item-instance-level属性只影响特定的记录(当前行)。
1 相关软件的安装1.1 Form Builder安装路径:(暂时没有)在安装的过程中,可以一路默认值下去。
需要注意的时候,在安装时,会不停的自动打开很多文件夹和命令提示符的窗口,不要手工去关闭这些窗口,安装程序会自动关闭,知道提示你安装成功(这时可以手工关闭余留下来的没有被关闭的窗口)。
注册表修改<1>、NLS_LANGHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE搜索NLS_LANG, NLS_LANG=CHINESE_CHINA.ZHS16GBK 简体中文NLS_LANG=CHINESE_TAIWAN.ZHT16MSWIN950 繁体中文NLS_LANG=AMERICAN_AMERICA.UTF8 英文<2>、FORMS60_PATH变量在后面加上TEMPLATE/APST AND.FMB所在的路径(D:\WORK11)和PLL文件所在的路径(D:\resource11)。
2 注册表单2.1 注册表单开发管理员 表单表单:你编译生成的XXX.fmx文件的文件名(不带后缀)用户表单名:可以是你任意输入的,并且将在下一步注册功能时用到。
2.2 注册功能开发管理员→功能下图中,功能、用户功能名、说明逗可以随意输入但用户功能名在下一步注册菜单时会用到。
表单就是上一步注册表单时你输入的用户表单名了。
2.3 增加Menu开发管理员→菜单提示可以随便填写,功能就是你上一步注册的用户功能名一个菜单可以包含很多的子菜单找某个模组的菜单名称可以到:系统管理员工→安全性→责任→定义如下图,选择或者输入你想查找的职责的名称,查找后红色框内的菜单就是你需要的菜单了。
3 Form开发入门3.1 Form的基本对象3.1.1 基本对象图示如下图,就是一个标准Form(TEMPLATE.fmb)所拥有的所有的对象3.1.2 基本对象说明FORM:可以有多个窗口。
窗口:只能有一个画布,但是还可以包括其他的类型的画布。
Oracle数据库培训Oracle数据库培训:全面提升您的数据库管理技能一、引言Oracle数据库作为全球领先的数据库管理系统,以其卓越的性能、可靠性和安全性,在各个行业中得到了广泛的应用。
为了帮助广大数据库管理员和开发人员更好地掌握Oracle数据库技术,我们特推出Oracle数据库培训课程。
本文将详细介绍本课程的目标、内容、培训方式及预期效果,帮助您全面了解Oracle数据库培训的相关信息。
二、培训目标1.理论与实践相结合:使学员掌握Oracle数据库的基本概念、体系结构、核心功能及高级特性,能够熟练运用Oracle数据库进行数据管理和维护。
2.提升技能水平:通过培训,使学员具备独立进行Oracle数据库安装、配置、优化、备份与恢复的能力。
3.适应企业需求:针对企业实际应用场景,培养学员具备解决实际问题的能力,提高企业数据库管理水平和业务运行效率。
4.考取Oracle认证:帮助学员顺利通过Oracle认证考试,获得Oracle认证数据库管理员(OCP)证书,提升个人职业竞争力。
三、培训内容1.Oracle数据库基础(1)Oracle数据库概述(2)Oracle数据库体系结构(3)SQL语言基础(4)PL/SQL编程2.Oracle数据库管理(1)数据库安装与配置(2)表空间与数据文件管理(3)用户、权限与角色管理(4)备份与恢复策略3.Oracle数据库性能优化(1)SQL优化(2)索引优化(3)分区技术(4)数据库监控与分析4.Oracle数据库高级特性(1)RAC集群技术(2)DataGuard物理备用数据库(3)GoldenGate实时数据复制(4)Oracle数据库安全策略四、培训方式1.面授课程:小班授课,面对面教学,方便学员与讲师互动交流,及时解答疑问。
2.实践操作:课程中安排大量实验环节,确保学员在实际操作中掌握Oracle数据库技术。
3.在线辅导:提供在线学习平台,学员可随时提问,讲师将在第一时间给予解答。
ORACLE FORM 开发实战あsdファsdファsdfas李正海2008/09/22目录1一个基础的FORM (3)2一个查询FORM (12)3多画布的操作方法 (13)4LOV使用 (15)5LIST的使用 (22)6FORM的参数调用 (23)7包含主从表的FORM (26)8加入自定义菜单 (29)9加入图像的方法 (31)10一个选择的范例 (32)11常用系统热键 (35)1一个基础的FORM1.在文件中选择新建,表格,从而新增出一个FORM。
2.建立数据块a)在导航器中点击该FORM,选择数据块向导b)输入表名,点刷新,显示出字段名c)使用,把字段全部选择到数据库项中。
d)点下一步,注意使用默认的:“请先创建数据库,然后调用布局向导”。
3.建立布局a)进入布局向导b)选择默认的布局向导c)选择显示项,把可用项全部变成显示项d)选择框架风格为默认的表格e)指定框架的名称及显示记录数f)完成布局向导4.运行FORMa)运行FORMb)点击查询中的执行,显示出所有数据c)点增加,新建立一条记录,输入数据,点保存,完成一条记录的输入d)在某条记录中,改变数据内容,点保存,完成一条记录的修改e)点删除,则删除该记录f)点退出,结束FORM运行2一个查询FORM1.新建一个块2.加入一个框架3.加入数据项4.加入按纽,输入如下代码:GO_BLOCK('LZHTEST001');SET_BLOCK_PROPERTY('LZHTEST001',DEFAULT_WHERE,'NAME LIKE :block15.text_item21||''%''');EXECUTE_QUERY;3多画布的操作方法1.加入一个画布,再加入一个堆叠式画布。
2.加入两个块3.设置块的关系4.加入向子画布切换的按纽其对应的WHEN_BUTTON_PRESSED语句为go_block('lzhtest0011'); --lzhtest0011为子块名5.加入子画布隐藏的按纽HIDE_VIEW('CANVAS39');-- CANVAS39为子块所在的画布名GO_BLOCK('LZHTEST001');-- LZHTEST001为主块名4LOV使用设置LOV的基本过程包括如下:b)增加LOV,点击在导航器中的LOVS,点后,进行LOV添加。
Oracle_Form_实战总结Lab 1: 创建客户化应⽤本节介绍如何创建⼀个客户化应⽤。
Step 1: 建⽴Directory以applprod⽤户登录操作系统运⾏:$ cd $APPL_TOP在⽬录$APPL_TOP下建⽴⽬录satyam,其结构如图(注意⼤⼩写的区分)图1.1Step 2: 修改Environment File以applprod⽤户登录操作系统修改环境⽂件 PROD.env ,增加如下2⾏:SATYAM_TOP = “/demoapp/demoappl /satyam/1.0.0”Export SATYAM_TOP重启ORACLE APPLICATIONS,以使更改⽣效。
Step 3: 创建Tablespace/User以applprod⽤户登录操作系统运⾏:$ sqlplus在SQL-PLUS中,以⽤户名SYSTEM连结数据库运⾏以下命令建⽴TABLESPACE:create tablespace satyam_datadatafile ' /demo/demodata/satyam_data01.dbf'size 500M reuse autoextend on next 10M ;create tablespace satyam_idxdatafile '/demo/demodata/satyam_idx01.dbf'size 100M reuse autoextend on next 10M ;运⾏以下命令建⽴USER:create user satyamidentified by satyamdefault tablespace satyam_datatemporary tablespace temp ;运⾏以下命令授权:grant connect, resource to satyam ;grant select any table to satyam ;grant select any sequence to satyam ;如果是⼀次性导⼊的话下⾯是运⾏创建Table, Sequence, Trigger, Synonym, View, Package等的脚本,在下⼀节再讨论。
Oracle+EBS+Forms开发指南(中级)信息技术最佳实践ORACLE核⼼应⽤技术E-B USINESS S UITEForms开发指南Author: 黄建华Creation Date: October 16, 2006Last Updated: March 24, 2013Document Ref:Version: DRAFT 1AApprovals:Copy Number _____Document ControlChange RecordReviewersDistributionNote To Holders:If you receive an electronic copy of this document and print it out, please write yourname on the equivalent of the cover page, for document control purposes.If you receive a hard copy of this document, please write your name on the frontcover, for document control purposes.ContentsDocument Control .................................................................................................................. i i 1.Folder、JTF Grid (2)1.3.Folder开发步骤(基于模版) (7)1.4.JTF Grid开发步骤 (10)2.多语⾔开发 (14)2.1.国际化⽀持 (14)2.2.Form⾃⾝的多语⾔版本 (14)2.3.数据多语⾔开发步骤 (14)2.4.EBS启⽤新语⾔时的考虑 (22)3.附件开发 (24)3.1.关于附件 (24)3.2.标准附件设置 (24)4.Javabean (29)4.1.Form与Java (29)4.2.例⼦:Hello World (31)4.3.例⼦:执⾏PC本地命令 (34)4.4.例⼦:读取PC⽂本⽂件 (37)4.5.例⼦:通⽤导⼊ (39)5.Form个性化 (41)5.1.Form个性化概述 (41)5.2.例⼦:修改字段Prompt (42)5.3.例⼦:有条件显⽰消息 (43)5.4.例⼦:调⽤数据库Package (44)5.5.例⼦:添加菜单 (44)5.6.例⼦:打开功能 (45)5.7.例⼦:执⾏查询 (46)5.8.例⼦:其他应⽤ (47)5.9.例⼦:Instance间迁移 (48)6.技巧、常⽤代码 (49)6.1.Form中的变量 (49)6.2.初始值、格式掩码 (49)6.3.消息处理 (50)6.6.MFG_ORGANIZATION_ID相关问题 (51)6.7.常⽤内置过程 (52)6.8.待续 (52)7.Open and Closed Issues for this Deliverable (53)Closed Issues (53)1.Folder、JTF Grid1.1.Folder开发步骤(从头开始)本节标题说明:标准指做Folder都要做⽽且是⼀样的步骤,可以考虑做个模版了;普通指和做普通Form⼀样;特殊指做Folder都要做但需要根据实际内容作修改。