Oracle EBS 開發中常見問題以及解決辦法,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
站在用戶的角度思考問題,與客戶深入溝通,找到阜新網站設計與阜新網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:網站建設、做網站、企業官網、英文網站、手機端網站、網站推廣、域名與空間、虛擬主機、企業郵箱。業務覆蓋阜新地區。
EBS Form開發中經常會遇到一些小問題,以免再次遇到而不記得什么原因。
1.帶有stacked canvas 的Form,比如content canvas A,stacked canvas B,這兩個canvas在WINDOW M上,當光標移動到A的最后一個Item(例如z)的時候,B canvas消失了(可以用Tab鍵移動光標至它,即顯示)。
Cause: B和A.z發生的互相遮蓋,即有重疊區域。
Solution: 將Item間距離拉大一些。
1-1)有時候還會發現某一個stacked canvas 沒有顯示出來,在樹狀結構中把canvas的排列順序調整一下(最好把item的順序也調整一下,因其也會有影響),content 在前,后面跟stacked A,stacked B。
1-2)一個content canvas(Main),兩個stacked canvas(A&B),發現只顯示了content canvas上的item。
Cause: 由于是在測試,B上還沒有內容,只選擇了view stacked canvas A。癥狀是A的內容不顯示,只是用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.復選框背景色及前景色無法顯示成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名替換掉了。
這里切記:只是寫相應的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查詢后變為灰色,無法進行新增等操作,關閉畫面重新打開后,畫面顯示正常,一旦執行查詢完畢則變
為灰色。
Solution: 增加on-insert Trigger后正常。
8.Block data source為view,在on-insert Trigger里面有寫一段用來在插入資料后將DB生成的ROWID抓出賦給相應block的ROW_ID項。
測試運行Form,在保存時報錯:on-insert 拋出no-data-found的異常。將抓ROWID的語句拿掉,測試正常,查看DB中rowid生成也正
常,之后看了一下Form. block的ROW_ID項,杯具,不知道長度怎么變成4了…
9.有時候在post-query里面對某個要顯示的非數據庫item賦值,這樣會造成在鼠標切換到另一條記錄時以及查詢完畢沒有做任何改動卻被
提示是否要保存修改。
Solution:POST-QUERY里面寫set_record_property(:system.trigger_record,:system.trigger_block, STATUS,QUERY_STATUS);
10.SET_ITEM_PROPERTY用來設置某個ITEM的某個屬性,可以說是設置Block中某個Item整體的某個屬性,有時候要設置某條記錄中的Item屬性(如當前記錄),這樣可以使用SET_ITEM_INSTANCE_PROPERTY.
11.Block 的insert_allowed屬性設置為Y,在when-new-block-instance里面用set_block_property設置insert_allowed為false,這樣新增記錄的按鈕會亮,但不能新增記錄。
Block 的delete_allowed屬性設置為Y,DML data source type設置為無,這樣刪除按鈕會亮,但不能刪除記錄,點刪除按鈕時下面會提示需要ON-LOCK trigger。
12.如果在post-query中用select into為某個item賦值,此item的database item屬性需設置為No,否則在ctrl+f11查詢后后會有提示框
frm-41050: You cannot update this record.
13.編譯時報錯:錯誤0發生在第0行,第0列
Compilation unit analysis terminated
procedure等的spec和body參數不一致的時候,編譯會報這個錯誤。
14.用Button中代碼控制修改DB數據,但數據并沒有在Form畫面顯示,按下Button時會提示FRM-40401: No changes to save
Solution:在update等及commit之前寫:System.Message_Level := 25;
15. 有時候想要在Button按過之后使其變為灰色,不可以在when-button-pressed中寫 set_item_property(blk.itm,enabled,property_false);改變自身的狀態,只能改變其它,可行的情況下可 以在這里使某個block執行execute_query,然后在post_query中利用條件將這個按鈕變灰。
16. 經常有id欄位在insert 記錄的時候自動塞sequence的值,這種情況最好在per-insert中把sequence.nexval賦值給block.item,而不要在 insert語句中直接寫insert into xx(id,...) values(sequence.nextval,...),因為這樣寫時,block.item依然是無值的,需在insert完成后從DB中取出相應 ID值賦值給block.item,否則易有問題,例如其下還有detail block由id串過去,則在detail block中作記錄保存時會報錯說ID不能為空(已經設置不空)或ID塞進了空值。
17. Current Record Visual Attribute Group,可以用來使當前記錄顯示不同顏色
18. query_find類型的Form,關閉result window時,如果光標在Window的最后一個block(多block時),則每點一次關閉,光標會往前走一個block,一直到第一個block時再點關閉才會關閉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.注意,如果在已經建立好的數據塊上重新使用數據塊向導,例如增加欄位(比如數據塊的源為某個table,現在需要增加一個列在table及block中,此時table增加列后,在block上重新使用數據塊向導刷新table調出新item),會使得當前已經建立的base table item的屬性發生還原!此時如果已經設置了很多非默認屬性,最好手動增加item。
22.Stacked canvas的水平滾動條位置是由canvas本身的view port的下邊界決定,將其view port下界設置為比canvas最下面的記錄多出一個滾動條的高度的位置。
View port的寬度決定了stacked canvas 在content canvas上的視界寬度。
有時會發現水平滾動條拉到最左端時,stacked canvas右邊界卻在垂直滾動條的左邊很遠的距離,這是stacked canvas的canvas太寬造成的,應設置為靠緊最右邊Item。
Stacked canvas 的垂直滾動條一般放在content canvas上(即一般設置為block顯示垂直滾動條,并顯示于content canvas,stacked canvas顯示水平滾動條,顯示于stacked canvas)。
23.Tools 等菜單項,例在form級增加special1(special xx....) trigger,里面可以寫這個菜單項要執行的代碼,初始化此菜單項可以在when-new-form-instance中用類似 APP_SPECIAL.INSTANTIATE('SPECIAL1','生成明細數據', 'POBKORD', TRUE);來實現。
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就沒再出現這。
28. 限制在新增記錄的時候必須第一個輸入某欄位,直接把這個Item設為First navigate item即可,即在block中位置排在最上面,或者排在它上面的item 的keyboard navigable屬性全部設置為No,然后在when-validate-item中判斷,如果這個Item為空則raise form_trigger_failure。
29.狀態欄提示信息。如果發現在保 存記錄等情形下應該在Window底部顯示的如"FRM-40400:Transaction complete:1 records applied and saved."沒有顯示,應該是Form. Module的Console Window屬性被設為了Null。改為隨便設一個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類型,Find block的query allowed設為NO,發現光標在Result block時,手電筒不可用,如果下面還有別的blcok,光標點過去,手電筒亮了,再點回Result block,手電筒可用。
Solution:把Find block的query allowed設為YES。(I Just wanna say "shit!")
31.Master-Detail類型的兩個Block,發現Master沒有值的時候,在Detail Block上執行CTRL+F11竟然把所有記錄都查出來了。
Solution:Relations的屬性Prevent Masterless Operations設置為Yes
32.Lov 的Filter Before Display如果設置為Y,且這個lov使用的record group的SQL中用了別名,就會有問題,會報frm-40502。因為Filter Before Display設置為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設置為None maybe有效。
34.錄入數據時,選擇日期--確定,系統詢問是否保存記錄。
原 因:數據塊1 trigger:WHEN-NEW-BLOCK-INSTANCE中有寫execute_query;因此錄入時,光標從當前塊(數據塊1)跳到數據 塊:CALENDAR-接著又回到當前塊(數據塊1),觸發數據塊1的WHEN-NEW-BLOCK-INSTANCE,執行 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,值設定為 TRUE,重新打開Form. Builder可以看到 所有引用的對象后面都會帶一個圖標,以方便區分哪些對象是引用的,哪些對象是屬于自己的。
37.有時候會發現關閉FORM的時候(點右上角的叉叉,F4沒發現這種情況),Form關閉了,卻留下一個紅色的Progress Indicator進度條,無法關閉,請檢查APP_CUSTOM包中的<first window>是否已改為你的第一個WINDOW的名字。
38.Display item使用Lov,返回Lov的第二個值到某Database Item(DB中保存此值),且Lov的Record Group SQL中用not exists ()排除掉了已經存在于數據庫的值,即每選擇一個值保存后,就不會再挑選到此值。
癥狀:Form查詢的時候,會彈出Lov讓選擇值
Cause:查詢時,Display item的顯示值是在Post-query中由此記錄的DB item得到并賦予的,由于發生Validation,而Lov中此時已無此值。
Solution:在Post-query中賦值后加上
SET_RECORD_PROPERTY(:SYSTEM.TRIGGER_RECORD,:SYSTEM.TRIGGER_BLOCK, STATUS,QUERY_STATUS);
看完上述內容,你們掌握Oracle EBS 開發中常見問題以及解決辦法的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!
網站標題:OracleEBS開發中常見問題以及解決辦法
文章起源:http://vcdvsql.cn/article12/pphcgc.html
成都網站建設公司_創新互聯,為您提供網站建設、手機網站建設、動態網站、網站排名、微信公眾號、企業網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯