OracleEBS開發(fā)中常見問題以及解決辦法

Oracle EBS 開發(fā)中常見問題以及解決辦法,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

站在用戶的角度思考問題,與客戶深入溝通,找到阜新網(wǎng)站設(shè)計與阜新網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、虛擬主機、企業(yè)郵箱。業(yè)務(wù)覆蓋阜新地區(qū)。

EBS Form開發(fā)中經(jīng)常會遇到一些小問題,以免再次遇到而不記得什么原因。

      1.帶有stacked canvas 的Form,比如content canvas A,stacked canvas B,這兩個canvas在WINDOW M上,當光標移動到A的最后一個Item(例如z)的時候,B canvas消失了(可以用Tab鍵移動光標至它,即顯示)。

Cause:    B和A.z發(fā)生的互相遮蓋,即有重疊區(qū)域。

Solution: 將Item間距離拉大一些。

      1-1)有時候還會發(fā)現(xiàn)某一個stacked canvas 沒有顯示出來,在樹狀結(jié)構(gòu)中把canvas的排列順序調(diào)整一下(最好把item的順序也調(diào)整一下,因其也會有影響),content 在前,后面跟stacked A,stacked B。

      1-2)一個content canvas(Main),兩個stacked canvas(A&B),發(fā)現(xiàn)只顯示了content canvas上的item。

Cause: 由于是在測試,B上還沒有內(nèi)容,只選擇了view stacked canvas A。癥狀是A的內(nèi)容不顯示,只是用TAB鍵的時候才會把A切換出來。造成這個的原因是B雖然沒有顯示,但是也是存在的,且是較大片空白,蓋住了A。--shit...

      1-3)有時候view--stacked canvas,選中了要顯示的stacked canvas,卻不見其顯示出來,看下stacked canvas的視圖端口高度和寬度是否為0。

      2.在Form中使用LOV時,LOV的Record Group 中的語句不要有用'--' Mark掉的東東在里面,如果有的話,'--'后面的所有語句都會被mark掉,因為Record Group 的Query語句會全部被放在一行中。切記

      3.Set_item_instance_property() 用來改變一列中的某個的屬性,如顯示特殊顏色等

      4.復(fù)選框背景色及前景色無法顯示成canvas底色、白字。
Solution:將背景色、前景色改成別的顏色,再分別改回automatic、automatic、transparent.

      5.  用emp做了一個Tab Page的測試Form,在Application中打開Form的時候報錯

developer error: set_window_position called with invalid relation:EMP

Solution:原來是PRE-FORM. Trigger 中的app_window.set_window_position('EMP', 'FIRST_WINDOW');寫成了

app_window.set_window_position('EMP', 'EMP');將'FIRST_WINDOW'用WINDOW名替換掉了。

這里切記:只是寫相應(yīng)的BLOCKNAME。

6.  FRM-30100:Block must have at least one primary key item.

Block:B_XXXX

Form.:F_XXXX

FRM-30085: Unable to adjust form. for output

Solution:將Block的DML Data Target Name 改為None。

7. 

基于view的block,在CRTL+F11查詢后變?yōu)榛疑瑹o法進行新增等操作,關(guān)閉畫面重新打開后,畫面顯示正常,一旦執(zhí)行查詢完畢則變 

 為灰色。

Solution: 增加on-insert Trigger后正常。

8.Block data source為view,在on-insert Trigger里面有寫一段用來在插入資料后將DB生成的ROWID抓出賦給相應(yīng)block的ROW_ID項。

測試運行Form,在保存時報錯:on-insert 拋出no-data-found的異常。將抓ROWID的語句拿掉,測試正常,查看DB中rowid生成也正

常,之后看了一下Form. block的ROW_ID項,杯具,不知道長度怎么變成4了…

9.有時候在post-query里面對某個要顯示的非數(shù)據(jù)庫item賦值,這樣會造成在鼠標切換到另一條記錄時以及查詢完畢沒有做任何改動卻被

提示是否要保存修改。
       Solution:POST-QUERY里面寫set_record_property(:system.trigger_record,:system.trigger_block, STATUS,QUERY_STATUS);

10.SET_ITEM_PROPERTY用來設(shè)置某個ITEM的某個屬性,可以說是設(shè)置Block中某個Item整體的某個屬性,有時候要設(shè)置某條記錄中的Item屬性(如當前記錄),這樣可以使用SET_ITEM_INSTANCE_PROPERTY.

11.Block 的insert_allowed屬性設(shè)置為Y,在when-new-block-instance里面用set_block_property設(shè)置insert_allowed為false,這樣新增記錄的按鈕會亮,但不能新增記錄。
            Block 的delete_allowed屬性設(shè)置為Y,DML data source type設(shè)置為無,這樣刪除按鈕會亮,但不能刪除記錄,點刪除按鈕時下面會提示需要ON-LOCK trigger。

 12.如果在post-query中用select into為某個item賦值,此item的database item屬性需設(shè)置為No,否則在ctrl+f11查詢后后會有提示框
frm-41050: You cannot update this record.

 13.編譯時報錯:錯誤0發(fā)生在第0行,第0列
Compilation unit analysis terminated
procedure等的spec和body參數(shù)不一致的時候,編譯會報這個錯誤。

 14.用Button中代碼控制修改DB數(shù)據(jù),但數(shù)據(jù)并沒有在Form畫面顯示,按下Button時會提示FRM-40401:  No changes to save
Solution:在update等及commit之前寫:System.Message_Level := 25;

 15. 有時候想要在Button按過之后使其變?yōu)榛疑?,不可以在when-button-pressed中寫 set_item_property(blk.itm,enabled,property_false);改變自身的狀態(tài),只能改變其它,可行的情況下可 以在這里使某個block執(zhí)行execute_query,然后在post_query中利用條件將這個按鈕變灰。

 16. 經(jīng)常有id欄位在insert 記錄的時候自動塞sequence的值,這種情況最好在per-insert中把sequence.nexval賦值給block.item,而不要在 insert語句中直接寫insert into xx(id,...) values(sequence.nextval,...),因為這樣寫時,block.item依然是無值的,需在insert完成后從DB中取出相應(yīng) ID值賦值給block.item,否則易有問題,例如其下還有detail block由id串過去,則在detail block中作記錄保存時會報錯說ID不能為空(已經(jīng)設(shè)置不空)或ID塞進了空值。

 17. Current Record Visual Attribute Group,可以用來使當前記錄顯示不同顏色

 18. query_find類型的Form,關(guān)閉result window時,如果光標在Window的最后一個block(多block時),則每點一次關(guān)閉,光標會往前走一個block,一直到第一個block時再點關(guān)閉才會關(guān)閉window.

為了不改動app_custom里面的

  if (wnd = get_view_property(get_item_property(:SYSTEM.CURSOR_ITEM,

                              ITEM_CANVAS), WINDOW_NAME)) then

    do_key('PREVIOUS_BLOCK');

  end if;

  hide_window(wnd);

而把每個result block的 "previous navigation block"都改成了query_find block。

19.   可利用APP_EXCEPTION.DISABLED;來失效KEY-按鈕

如在KEY-CLRREC Trigger中寫APP_EXCEPTION.DISABLED;則畫面上的擦除按鈕雖亮卻失效。

20.   想要顯示Stacked canvas時,用View――Stacked canvas,列表框中卻沒有想要顯示的Stacked canvas供選擇,是因為想要顯示的Stacked canvas的Window和Content canvas的Window不同。

 21.注意,如果在已經(jīng)建立好的數(shù)據(jù)塊上重新使用數(shù)據(jù)塊向?qū)?,例如增加欄位(比如?shù)據(jù)塊的源為某個table,現(xiàn)在需要增加一個列在table及block中,此時table增加列后,在block上重新使用數(shù)據(jù)塊向?qū)⑿聇able調(diào)出新item),會使得當前已經(jīng)建立的base table item的屬性發(fā)生還原!此時如果已經(jīng)設(shè)置了很多非默認屬性,最好手動增加item。

22.Stacked canvas的水平滾動條位置是由canvas本身的view port的下邊界決定,將其view port下界設(shè)置為比canvas最下面的記錄多出一個滾動條的高度的位置。
View port的寬度決定了stacked canvas 在content canvas上的視界寬度。
有時會發(fā)現(xiàn)水平滾動條拉到最左端時,stacked canvas右邊界卻在垂直滾動條的左邊很遠的距離,這是stacked canvas的canvas太寬造成的,應(yīng)設(shè)置為靠緊最右邊Item。
Stacked canvas 的垂直滾動條一般放在content canvas上(即一般設(shè)置為block顯示垂直滾動條,并顯示于content canvas,stacked canvas顯示水平滾動條,顯示于stacked canvas)。

23.Tools 等菜單項,例在form級增加special1(special xx....) trigger,里面可以寫這個菜單項要執(zhí)行的代碼,初始化此菜單項可以在when-new-form-instance中用類似 APP_SPECIAL.INSTANTIATE('SPECIAL1','生成明細數(shù)據(jù)', 'POBKORD', TRUE);來實現(xiàn)。

24.LIST條目,Elements in List增加以后,沒法刪除掉,只得刪掉這個Item重新建一個,如果Elements in List多的話,會很麻煩,要一個一個重新寫。
Solution:使用Shift+Ctrl+小于號(Shift+Ctrl+<)快捷鍵可以刪除掉多余的Elements

25.按鈕按過之后灰,可以按后go_block,go_item,到其它Block,然后在when-new-record-instance里面寫使control block的按鈕失效,當然也可以在其它trigger里面寫,看情形。
       26.獨立安裝oralce form. developer組件,oralce exclusive show lov button in oralce form. developer.

解決方法:

forms\java\oracle\forms\registry\Registry.dat

修改app.ui.lovButtons=true(默認是false)

注:個人沒測試過,不知效果。

27.FRM-40654 Record has been updated by another user.Re-query to see change. 

不知道為什么出這個錯誤,新寫的Form,Base View,沒什么another user在用,后自己寫了個on-lock就沒再出現(xiàn)這。

28. 限制在新增記錄的時候必須第一個輸入某欄位,直接把這個Item設(shè)為First navigate item即可,即在block中位置排在最上面,或者排在它上面的item 的keyboard navigable屬性全部設(shè)置為No,然后在when-validate-item中判斷,如果這個Item為空則raise form_trigger_failure。

29.狀態(tài)欄提示信息。如果發(fā)現(xiàn)在保 存記錄等情形下應(yīng)該在Window底部顯示的如"FRM-40400:Transaction complete:1 records applied and saved."沒有顯示,應(yīng)該是Form. Module的Console Window屬性被設(shè)為了Null。改為隨便設(shè)一個Window即可。

附屬性說明:

Console Window property

Specifies the name of the window that should display the Form. Builder console.  The console includes the status line and message line, and is displayed at the bottom of the window. 

On Microsoft Windows, the console is always displayed on the MDI application window, rather than on any particular window in the form; however, you must still set this property to the name of a form. window to indicate that you want the console to be displayed. 

If you do not want a form. to have a console, set this property to <Null>. 

30.QUERY_FIND類型,F(xiàn)ind block的query allowed設(shè)為NO,發(fā)現(xiàn)光標在Result block時,手電筒不可用,如果下面還有別的blcok,光標點過去,手電筒亮了,再點回Result block,手電筒可用。

Solution:把Find block的query allowed設(shè)為YES。(I Just wanna say "shit!")

31.Master-Detail類型的兩個Block,發(fā)現(xiàn)Master沒有值的時候,在Detail Block上執(zhí)行CTRL+F11竟然把所有記錄都查出來了。

Solution:Relations的屬性Prevent Masterless Operations設(shè)置為Yes 

32.Lov 的Filter Before Display如果設(shè)置為Y,且這個lov使用的record group的SQL中用了別名,就會有問題,會報frm-40502。因為Filter Before Display設(shè)置為Y的話,它會以 where 原列名 like %% 去篩選。可以嘗試在原SQL外嵌套一層select。

33.Block 的Query Data Source Type為FROM clause query時,報FRM-30100: Block must have at least one primary key item.----把DML Data Target Type設(shè)置為None maybe有效。

34.錄入數(shù)據(jù)時,選擇日期--確定,系統(tǒng)詢問是否保存記錄。

原 因:數(shù)據(jù)塊1 trigger:WHEN-NEW-BLOCK-INSTANCE中有寫execute_query;因此錄入時,光標從當前塊(數(shù)據(jù)塊1)跳到數(shù)據(jù) 塊:CALENDAR-接著又回到當前塊(數(shù)據(jù)塊1),觸發(fā)數(shù)據(jù)塊1的WHEN-NEW-BLOCK-INSTANCE,執(zhí)行 execute_query;

35.Form中的Procedure中可以以下方式來寫

BEGIN
          IF event = 'INIT' THEN
             ...

   ELSIF event=xxxxx THEN

      ...
          ELSE
             app_exception.invalid_argument(procname => p_procedure_name,
                                                                         argument => p_argument,
                                                                            VALUE   => p_value);
           END IF;
       END; 

36. 在注冊表中HKEY_LOCAL_MACHINE\SOFTWARE\Oracle下新建字符串值ORACLE_APPLICATIONS,值設(shè)定為 TRUE,重新打開Form. Builder可以看到 所有引用的對象后面都會帶一個圖標,以方便區(qū)分哪些對象是引用的,哪些對象是屬于自己的。

Oracle EBS 開發(fā)中常見問題以及解決辦法

 37.有時候會發(fā)現(xiàn)關(guān)閉FORM的時候(點右上角的叉叉,F(xiàn)4沒發(fā)現(xiàn)這種情況),F(xiàn)orm關(guān)閉了,卻留下一個紅色的Progress Indicator進度條,無法關(guān)閉,請檢查APP_CUSTOM包中的<first window>是否已改為你的第一個WINDOW的名字。

 38.Display item使用Lov,返回Lov的第二個值到某Database Item(DB中保存此值),且Lov的Record Group SQL中用not exists ()排除掉了已經(jīng)存在于數(shù)據(jù)庫的值,即每選擇一個值保存后,就不會再挑選到此值。

癥狀:Form查詢的時候,會彈出Lov讓選擇值

Cause:查詢時,Display item的顯示值是在Post-query中由此記錄的DB item得到并賦予的,由于發(fā)生Validation,而Lov中此時已無此值。

Solution:在Post-query中賦值后加上

SET_RECORD_PROPERTY(:SYSTEM.TRIGGER_RECORD,:SYSTEM.TRIGGER_BLOCK, STATUS,QUERY_STATUS);

看完上述內(nèi)容,你們掌握Oracle EBS 開發(fā)中常見問題以及解決辦法的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站標題:OracleEBS開發(fā)中常見問題以及解決辦法
文章起源:http://muchs.cn/article12/pphcgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)手機網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、網(wǎng)站排名、微信公眾號企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)