您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > oracle+二次开发-FORM篇
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--用户函数命名如下FROMNAME:subfunction例如:PURCHASEORDERS:DELETE------------------------------------------------------------------2.添加选择到指定的菜单中添加15个指定的form-specificentries到每一个指定的菜单中:tools,reports,actionsCreateaForm-level,User-namedTriggerforEachEntry--Theform-leveluser-namedtriggermustbecalledSPECIALn,wherenisanumberfrom1to45--ToolsmenuincludesSPECIAL1toSPECIAL15--ReportsmenuincludesSPECIAL16toSPECIAL30,andthemenunameReportscanbechanged--ActionsmenuincludesSPECIAL31toSPECIAL45,andthemenunameActionscanbechanged当form启动时,在pre-form触发器中instantiate你特定的菜单items调用app_special.instantiate包procedureAPP_SPECIAL.INSTANTIATE(option_namevarchar2,--定义tigger名字hintvarchar2defaultnull,--定义菜单实体的名字,使用&来定义菜单实体的键盘快捷键iconvarchar2defaultnull,--initially_enabledbooleandefaulttrue,separatorvarchar2defaultnull);--定义'LINE'为separator例子app_special.instantiate(’SPECIAL1’,’&PrintOrder’,’PRINTORD’);在tool菜单中的checkboxes--option_name与trigger_name包括关键字CHECKBOX(例如:SPECIAL3_CHECKBOX)app_special.instantiate(’SPECIAL3_CHECKBOX’,’Spe&cial3BoxwLine’,’’,TRUE,’LINE’);--调用app_special.set_checkbox来初始化checkbox的值app_special.set_checkbox(’SPECIAL3_CHECKBOX’,’TRUE’);--在SPECIALn_CHECKBOX函数中和相应的逻辑代码中测试checkboxapp_special.get_checkboxif(app_special.get_checkbox(’SPECIAL3_CHECKBOX’)=’TRUE’)thenfnd_message.debug(’Special3isTrue!’);elsefnd_message.debug(’Special3isFalse!’);endif;----------------------------------------------在你在pre-form中instantiate实体,随意将指定的菜单实体设置为可用或不可用(基于数据块),调用APP_SPECIAL.ENABLEprocedureAPP_SPECIAL.ENABLE(option_namevarchar2,state);在form-level中的pre-blocktrigger里面,将你的special菜单的item定义为disableapp_special.enable(’SPECIAL1’,PROPERTY_OFF);在form-level中的pre-blocktrigger里面,将你的special菜单的item定义为ableapp_special.enable(’SPECIAL1’,PROPERTY_on);将所有的special菜单设置为disableapp_special.enable(’SPECIAL’,PROPERTY_OFF);------------------------------------------------------------------编辑鼠标右键菜单调用APP_POPUP.INSTANTIATE(block或者item层的PRE-POPUPMENUTrigger)procedureAPP_POPUP.INSTANTIATE(option_namevarchar2,txtvarchar2,initially_enabledbooleandefaulttrue,separatorvarchar2defaultnull);与app_special.instantiate类似例如:APP_POPUP.INSTANTIATE('POPUP1','FirstEntry');d)PRE-QUERY--Ifyoudon'tdothis,whateverquerycriteriayoumayenterin--theconcatenatedflexfield,itisnottakenintoaccount.FND_FLEX.EVENT('PRE-QUERY');e)KEY-LISTVALAPP_STANDARD.EVENT('KEY-LISTVAL');FND_FLEX.EVENT('KEY-LISTVAL');------------------------------------------------------------------关于ImplementingZoomUsetheCustomLibrary的学习:1..pll文件可以用formbuilder打开,修改,创建2..pll文件的编译方法:f60genmodule=CUTOM.PLLuserid=apps/appsmodule_type=LIBRARY3.当系统不自动激活菜单上的图标时,可以在数据块的block-level的when-new-block-instancetrigger中添加如下代码:以zoom为例子:set_menu_item_property('VIEW.ZOOM',ENABLED,PROPERTY_TURE)在form-level的相应的trigger(比如zoomtrigger)中改写下列代码:custom.event('ZOOM')4.fnd_function.exrcute语法:procedureFND_FUNCTION.EXECUTE(function_nameINvarchar2,open_flagINvarchar2default’Y’,session_flagINvarchar2default’SESSION’,other_paramsINvarchar2defaultNULL,activateINvarchar2default’ACTIVATE’,browser_targetINvarchar2defaultNULL);5.FND_FUNCTION.TEST(function_nameINvarchar2)测试指定的函数是否可以连接,该函数用于form启动时测试函数的可用性,对于‘INIT’的理解:Examinecurrentconditionsandresetdefaultsanddynamicattributesasnecessary.Usuallycalledbyotherhandlersthataffectthisitem.validate(参数);使form执行基于参数范围的有效的过程.参数为:default_scope,form_scope,record_scope,item_scope------------------------------------------------------------------弹性域(Flexfields)的总结:使用FND_KEY_FLEX.DEFINE在itemhandler中设定key弹性域的定义procedureflexfield_item_name(eventvarchar2)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’,--YourIDfieldistheGL_ACCOUNT_CC_IDitemAPPL_SHORT_NAME=’SQLGL’,CODE=’GL#’,NUM=’101’--可以使用GL_SET_OF_BOOKS_ID作为structureid);----------------------------------------------------------------------------------使用FND_DESCR_FLEX.DEFINE在itemhandler中设定描述性弹性域的定义定义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’);)-------------------------------------
本文标题:oracle+二次开发-FORM篇
链接地址:https://www.777doc.com/doc-5455071 .html