form开发相关技巧.docx
- 文档编号:3434804
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:15
- 大小:27.79KB
form开发相关技巧.docx
《form开发相关技巧.docx》由会员分享,可在线阅读,更多相关《form开发相关技巧.docx(15页珍藏版)》请在冰豆网上搜索。
form开发相关技巧
Form相关技巧
Form相关技巧
===========================================================
作者:
hb0xf0wk()
发表于:
2008.01.2817:
57
分类:
Oracle开发
出处:
---------------------------------------------------------------
1.一进页面就能看到表中已生成数据,而不用按ctrl+f11进行查询的语句:
在form级的触发器when-new-form-instance中,
写如下代码:
go_block('XXXX');
execute_query;
要查询的数据块的名称
说明:
当使用基于表建立的块时,可使用块里的任何项的GO_BLOCK或者GO_ITEM找到那个块
当查询数据到一个块里去,可通过execute_query进行处理
补充:
用DELETE_RECORD从块中删除当前记录,要改变数据库的记录,必须使用COMMIT_FORM
2,什么办法可以控制form中File菜单中的Export吗?
使其失效
答:
在FORM中,在FORM级的触发器EXPORT中,
将其中的代码app_standard.event('EXPORT');屏蔽掉,改为null;试一试
3当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’,’&rintOrder’,’PRINTORD’);
4,在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函数中和相应的逻辑代码中测试checkbox
app_special.get_checkbox
if(app_special.get_checkbox(’SPECIAL3_CHECKBOX’)=’TRUE’)then
fnd_message.debug(’Special3isTrue!
’);
else
fnd_message.debug(’Special3isFalse!
’);
endif;
5,在你在pre-form中instantiate实体,随意将指定的菜单实体设置为可用或不可用(基于数据块),
调用APP_SPECIAL.ENABLE
procedureAPP_SPECIAL.ENABLE(option_namevarchar2,
state);
在form-level中的pre-blocktrigger里面,将你的special菜单的item定义为disable
app_special.enable(’SPECIAL1’,PROPERTY_OFF);
在form-level中的pre-blocktrigger里面,将你的special菜单的item定义为able
app_special.enable(’SPECIAL1’,PROPERTY_on);
将所有的special菜单设置为disable
app_special.enable(’SPECIAL’,PROPERTY_OFF);
6,编辑鼠标右键菜单
调用APP_POPUP.INSTANTIATE(block或者item层的PRE-POPUPMENUTrigger)
procedureAPP_POPUP.INSTANTIATE(
option_namevarchar2,
txtvarchar2,
initially_enabledbooleandefaulttrue,
separatorvarchar2defaultnull);
与app_special.instantiate类似
例如:
APP_POPUP.INSTANTIATE('POPUP1','FirstEntry');
7,关于ImplementingZoomUsetheCustomLibrary的学习:
1..pll文件可以用formbuilder打开,修改,创建
2..pll文件的编译方法:
f60genmodule=CUTOM.PLLuserid=apps/appsmodule_type=LIBRARY
3.当系统不自动激活菜单上的图标时,可以在数据块的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启动时测试函数的可用性,
8,弹性域(Flexfields)的总结:
使用FND_KEY_FLEX.DEFINE在itemhandler中设定key弹性域的定义
procedureflexfield_item_name(eventvarchar2)
is
begin
fnd_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_IDitem
APPL_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’);
)
9,COPY命令
Copiesavaluefromoneitemorvariableintoanotheritemorglobalvariable.
Syntax
PROCEDURECOPY(sourceVARCHAR2,destinationVARCHAR2)
Parameters
source:
Thesourceisaliteralvalue.
destination:
Thedestinationcanbeeitheratextitemoranotherglobalvariable.
例:
COPY('Yes','GLOBAL.'||global_var_name);
将‘YES’付值给变量global_var_name
10,message用法总结:
1.设置信息:
--FND_MESSAGE.SET_NAME语法:
procedureFND_MESSAGE.SET_NAME(application_shortnameINvarchar2,message_nameINvarchar2);
作用:
从MessageDictionary获取一条信息
一般情况下在FORM中显示出错信息使用以下代码:
FND_MESSAGE.SET_NAME(APPL_SHORT_NAME,MESSAGE_NAME);
FND_MESSAGE.ERROR;
--FND_MESSAGE.RETRIEVE
作用:
取得一条数据库中的等待信息
--FND_MESSAGE.SET_STRING(valueINvarchar2)
作用:
将字符串放到消息栈中,
--FND_MESSAGE.SET_TOKEN
作用:
用值替换message的信息中的变量
语法:
procedureFND_MESSAGE.SET_TOKEN(token_nameINVARCHAR2,valueINVARCHAR2
translateINbooleandefaultFALSE);
--在form用于显示信息的函数
1.FND_MESSAGE.ERROR
2.FND_MESSAGE.WARN
例子
Example:
FND_MESSAGE.SET_NAME(’SQLAP’,’AP_PAY_MULTI_PAY_VOID’);
REC_COUNT:
=
FND_MESSAGE.SET_TOKEN(’NUM_OF_RECS’,REC_COUNT);
IF(NOTFND_MESSAGE.WARN)THEN
RaiseFORM_TRIGGER_FAILURE;
ENDIF;
3.FND_MESSAGE.QUESTION
语法:
FND_MESSAGE.QUESTION(
button1INvarchar2default‘YES’,
button2INvarchar2default‘NO’,
button3INvarchar2default‘CANCEL’;
default_btnINnumberdefault1,
cancel_btnINnumberdefault3,
iconINvarchar2default‘question’)returnnumber;
说明:
FND_MESSAGE.QUESTION返回一个被选中的button的number
Example:
FND_MESSAGE.SET_NAME(’FND’,’ATCHMT-COMMITBEFOREINVOKING’);
IFFND_MESSAGE.QUESTION
(’YES’,’CANCEL’,NULL,1,2,NULL)=2THEN
RAISEFORM_TRIGGER_FAILURE;
ENDIF;
4.FND_MESSAGE.SHOW
作用:
显示信息
5.FND_MESSAGE.DEBUG
6.FND_MESSAGE.GET
作用:
取得在message中设置好的message信息
11设置Item-level和Item-instance-level属性时需特别的注意,
Item-level属性影响所有的记录,而Item-instance-level属性只影响特定的记录(当前行)。
12fotmattingcurrencyfields(货币的转换和格式化)
FND_CURRENCY:
TheDynamicCurrencyfeatureallowsdifferentvaluesinarbitrarycurrenciestobedisplayedin
thesamereportorform,eachshownwithappropriateformatting.
FND_CURRENCY.GET_FORMAT_MASK(:
ORDERS.CURRENCY_CODE,GET_ITEM_PROPERTY('LINES.PRICE',MAX_LENGTH));
1.取得需对应的货币
其中:
GET_ITEM_PROPERTY('LINES.PRICE',MAX_LENGTH)为返回一个该item的最大长度,
FND_CURRENCY.GET_FORMAT_MASK(currency_codeINvarchar2,field_lengthINnumber)returnvarchar2;
2.格式化(需要的话进行汇率转换)item的货币类型
APP_ITEM_PROPERTY.SET_PROPERTY('LINES.PRICE',FORMAT_MASK,
FND_CURRENCY.GET_FORMAT_MASK(:
ORDERS.CURRENCY_CODE,
GET_ITEM_PROPERTY('LINES.PRICE',MAX_LENGTH)))
3.动态控制item的显示格式的触发范围
在Block-level的Post-querytrigger和Item-level的when-validate-itemtrigger调用handler,控制显示格式。
CALENDAR日历
如何实现在form中弹出calendar并返回所选日期的功能?
1.设textitem为日期型,LOV属性为:
ENABLE_LIST_LAMP并且ValidatefromListLOV—>No
2.在该textitem的KE_LISTVAL下加入如下代码:
calendar.show;
trigger属性ExecutionHierarchy—>Override,fireinenter-querymode—>No。
使用APP_DATE.FND_DATE取得服务器端的时间环境
13,Dependenciesitem的编程
语法:
1.APP_FIELD.SET_DEPENDENT_FIELD(EVENT,:
block.master_item=CONDITION,
‘block.dependent_item’);
用途:
Aconditionally-dependentitemchangesvalidationwhenthevalueinthemaster
itemchanges.Specifytheconditionratherthanthemasteritemname.
Thisproceduremakesanitementerableornotenterablebasedonwhetherthemasteritem
isNULLoraspecifiedconditionisTRUE,andclearsthefield.Thedependentitemcanbe
atextitem,checkbox,orpoplist.
Youtypicallycallthisprocedureinthefollowingtriggers:
?
WHEN–VALIDATE–ITEMonthemasterfield
?
WHEN–VALIDATE–ITEMonthefield(s)theconditionisbasedonorineventINIT
onthedependentfield
?
PRE–RECORD
?
POST–QUERY(requiredonlywhenthedependentitemisina
multi–recordblock)
:
block.master_item=CONDITION包括:
--APP_FIELD.SET_DEPENDENT_FIELD(EVENT,(:
block.master_itemISNOTNULL),
’block.dependent_item’);用于Multipleitemsmaydependonasinglemaster.
--APP_FIELD.SET_DEPENDENT_FIELD(EVENT,((:
block.master_item1ISNOTNULL)AND
(:
block.master_item2ISNOTNULL)),’block.dependent_item’);
用于Twomasteritemsmayshareadependentitem.
--APP_FIELD.SET_DEPENDENT_FIELD(EVENT,’block.master_item,’block.dependent_item’);
用于Cascadingdependence-anitemcanbebothmasteranddependent.
2.APP_FIELD.SET_EXCLUSIVE_FIELD
用途Mutuallyexclusiveitems—theylookliketwoitems,butbehaveasone.Use
APP_FIELD.SET_EXCLUSIVE_FIELDtocode.
--APP_FIELD.SET_EXCLUSIVE_FIELD(EVENT,’block.item1’,’block.item2’,’block.item3’);
Callitemhandlerproceduresin:
–WHEN-VALIDATE-ITEMforeachexclusiveitem
–PRE-RECORDontheitems’block(FireinEnter-QueryMode:
No)
–WHEN-CREATE-RECORDontheitems’block
3.APP_FIELD.SET_INCLUSIVE_FIELD
用途MutuallyInclusiveItems—oneforallandallforone!
UseAPP_FIELD.SET_INCLUSIVE_FIELDtocodeasetofitemswhere,ifany
oftheitemsisnotnull,allitemsarerequired.
--APP_FIELD.SET_INCLUSIVE_FIELD(EVENT,’block.item1’,’block.item2’);
?
Callitemhandlerproceduresin:
–WHEN-VALIDATE-ITEMforeachinclusiveitem
–PRE-RECORDontheitems’block(FireinEnter-QueryMode:
No)
4.APP_FIELD.SET_REQUIRED_FIELD
用途:
ConditionallyMandatoryitems—useAPP_FIELD.SET_REQUIRED_FIELDto
requirecertainitemsonlyifacertainconditionismet.
--APP_FIELD.SET_REQUIRED_FIELD(EVENT,(CONDITION),’block.item’);
通常在以下的trigger中调用Dependencies控制逻辑:
PRE-RECORD,when-create-record,
when-validate-item,when-checkbox-changed,when-radio-changed,when-list-changed
和‘INIT’事件。
PRE-RECORD和INIT是在操作数据前初始化这些逻辑,而其他是在item发生变化后验证这些逻辑,满足条件则进行后续的动作。
------------------------------------------------------------------------------
使用APP_ITEM_PROPERTY.SET_PROPERTY代替SET_ITEM_PROPERTY设置item属性
APP_ITEM_PROPERTY.SET_PROPERTYmo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- form 开发 相关 技巧