Oracle Form开发--Form消息提示

消息的使用,我经常看到有的同学喜欢在FORM中直接使用FND_MESSAGE.DEBUG('xxxxx');来显示错误或提示信息,实际上这是非常不正确的做法。
顾名思及DEBUG是用来调试的,并不是用来进行人机交互的友好的方式,也不符合Oracle的标准用法。
Oracle的标准用法是使用

1 定义消息

登陆ORACLE EBS,在左面的职责里面选择应用开发员,在右面的菜单中选择 “应用产品>消息”  打开的界面即可定义消息,查询消息了。定义消息内容时可以使用参数,参数是&加上参数名,前后需要空格隔开,比如参数 &BILL_NO ,参数名最好大写。语言简体中文是ZHS。当然啦,也可以通过SQL语句查询所有的消息,所有的中文消息语句为

select * from FND_NEW_MESSAGES where language_code='ZHS' ,如果知道消息名,可直接用select * from FND_NEW_MESSAGES where message_name= 'FND_CUSTM_SAVE_CHANGES'来查看,注意消息名一定要大写才能查询出来(红色部分为要查询的消息名称)!

2 生成消息

定义好消息后并不能使用消息,还需要生成消息。使用应用开发员职责>其它>请求>运行 在弹出的窗口选择单个请求后点击确定按钮,在这个窗口中选择如后面截图所示黄色部分内容,点击确定后点击提交按钮,会出来窗口,看到自己的请求的阶段变成已完成,状态变成正常后就可以了。再次打开并登陆EBS后就可以使用该消息了,注意一定要关闭EBS后重新打开才可以使用哦。

3 使用消息

FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;

一般情况下在FORM中显示出错信息使用以下代码:
FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;
FND_MESSAGE.ERROR ;

在PACKAGE中显示出错信息一般使用以下代码:
FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;
APP_EXCEPTION.RAISE_EXCEPTION ;

 

下面給大家收集一下相關Oracle Form的消息提示

1. FND_MESSAGE.SET_STRING(‘<Message>’)。

此消息一定要結合FND_MESSAGE.SHOW或FND_MESSAGE.ERROR或FND_MESSAGE.HINT或FND_MESSAGE.WARN或FND_MESSAGE.QUESTION使用才能彈出對話窗口或顯示消息。

例如:

FND_MESSAGE.SET_STRING(‘陳顯平測試Oracle Form的消息,’ || Chr(10) ||

‘大家看一下是否成功?’);

FND_MESSAGE.SHOW;

 

2.FND_MESSAGE.SET_NAME(‘<APP_SHORT_NAME>’,’<Message_CODE>’)

此消息也要結合FND_MESSAGE.SHOW或FND_MESSAGE.ERROR或FND_MESSAGE.HINT或FND_MESSAGE.WARN或FND_MESSAGE.QUESTION使用才能彈出對話窗口或顯示消息。

參數說明:

<APP_SHORT_NAME>:用應產品簡稱.如下圖紅色圓框:

<Message_CODE>:消息代碼。若在系統表中找不對應消息說明,則消息說明自動默認為<Message_CODE>。還有,消息代碼使用前自動轉換大寫。

為何Oracle Form要內置此函數?它是為了系統定義多語言版本。

例如:

FND_MESSAGE.SET_NAME(‘FPT’,’ORACLE_001’);

FND_MESSAGE.ERROR;

 

3.FND_MESSAGE.DUBEG(‘<Message>’);

它是用於調試的,效果等同於FND_MESSAGE.SET_NAME或FND_MESSAGE.SET_STRING結合FND_MESSAGE.SHOW使用。

例如:

FND_MESSAGE.DEBUG(‘陳顯平測試Oracle Form的消息,’ || Chr(10) ||

‘大家看一下是否成功?’);

 

4.FND_MESSAGE.SHOW、FND_MESSAGE.ERROR、FND_MESSAGE.HINT和FND_MESSAGE.WARN的區別

FND_MESSAGE.SHOW提示的是注意消息,如下圖

FND_MESSAGE.ERROR提示的是誤錯消息,如下圖

FND_MESSAGE.HINT是顯示在表單中的狀態欄,如下圖

 

FND_MESSAGE.WARN提示有“確認”和“取消”二個按鈕,按确认向下执行,按取消停止向下执行。,它與FND_MESSAGE.QUESTION類似。

例如:如下代码可以达到以上效果。

FND_MESSAGE.SET_NAME('GMA', 'SY_NOFUTUREDATE');
IF NOT FND_MESSAGE.WARN THEN
    RAISE FORM_TRIGGER_FAILURE;
END IF;

 

5.FND_MESSAGE.QUESTION(BUTTON1 IN VARCHAR2,BUTTON2 IN VARCHAR2,BUTTON3 IN VARCHAR2,DEFAULT_BTN IN NUMBER,CANCEL_BTN IN NUMBER,ICON IN VARCHAR2)

用於自定義對話按鈕,比FND_MESSAGE.WARN要靈活多了。

例如:

FND_MESSAGE.SET_STRING(‘陳顯平測試Oracle Form的消息,’ || Chr(10) || ‘大家看一下是否成功?’);
Int_Choose:=FND_MESSAGE.QUESTION(‘確定’,null,’取消’,1,2,’NOTE’);
If Int_Choose=2 Then
            Null;
ElseIf Int_Choose=1 Then
            Null;
End If;

 

posted @ 2014-11-19 09:41  FelixHo0930  阅读(4743)  评论(0)    收藏  举报