實在對象如表格、Sequence、索引等建在本應用對應的用戶表空間中,其他對象如視圖、別名創建在Apps下,常見錯誤是新手把表建在APPS下,以後又來建別名,這個時候刪除別名時會報對象不存在,而建別名的時候又報對象已存在
如果把腳本保存在文件裡面,注意一個塊比如一個創建視圖的語句不要有空行,否則會出現如下情況:把語句拷貝到SQL Window能正常運行,用@執行文件卻報錯
如果要執行execute_query,注意要go_block到適當的Block,但是go_block是個受限過程,並不一定都能成功
Master-detail關系
block both are database block
each block has one item based on database displayed
在PL/SQL Develop中沒有環境變量,所以如果要查詢多組織的View,需要先執行設置環境變量函數
BEGIN
fnd_client_info.set_org_context('83');
END;
GLOBAL變量對於所有form有效(可能是同一個應用,這個尚未驗證),而不僅僅是你所開發的form
變量比如Global和Parameter的初始化應該在pre-form裡面,在when-new-form-instance裡面初始化不行,因為when-new-form-instance是在進入第一個導航塊的第一個item之後才促發的
沒有屬性指名Block的記錄數,不過可以通過GET_BLOCK_PROPERTY(QUERY_HITS) 取得查詢到的記錄數
hide_view並沒有真正hide一個畫布,只是放到最下層,所以如果上層的畫布沒有完全覆蓋下層畫布,下層的畫布很可能用戶還看得到;show_view則是把畫布放在最上層
lov驗證的時候是驗證第一個可見的列,並且會把其他的返回值返回給各個Item,而不是僅僅驗證而已
lov的查詢一般是針對第一列,但是如果我們把%放在最前面,則可以查詢所有列
用Execute_query執行查詢的時候,會把Copy Value From Item裡面的那個Item的值自動作為查詢條件。當創建記錄的時候也會直接用該值初始化,而且不改變記錄的狀態。在更新記錄的時候不知道會不會Copy過來尚未驗證。Get_Item_property的時候用ENFORCE_KEY屬性,但不能Set。該屬性在Master-detail設置的時候自動創建,刪除的時候自動刪除。如果不希望Copy Value From Item影響查詢結果,可以在Pre-Query裡面把Item的值設為null。
app_query.reset('block_name');如果第一次調用,會把當前的DEFAULT_WHERE,然後什麼都不做,以後再來調用的時候則會把第一次設置的DEFAULT_WHERE用set_block_property('SAA_HEADERS',DEFAULT_WHERE,...)設置回來,具體請參考app_core庫
When-create-record的時候給Item賦值不改變記錄狀態
Sequence,如果我們在Item的Initial Value裡面賦值,那麼假如用戶Focus To新記錄,又回到老記錄,如此反復,Sequence會不斷變大的
SQL Order BY的時候null值排在最後,這個一般不符合實際要求,可以這樣解決ORDER BY nvl(Geography_Code,chr(0))解決
Trigger順序1
pre-commit
塊1的pre-insert,on-insert,post-insert
塊2的pre-insert,on-insert,post-insert
...
post-forms-commit
Trigger順序2
when-list-changed在前,Validation item在後,因為Validation item是在要離開這個item的時候才促發的
Trigger順序3
pre-form/when-create-record/pre-block/when-new-forms-instance/when-validate-record/on-insert/post-forms
當定位到主塊的一個記錄,會促發子塊的when-clear-record事件和when-create-record事件,問題是如果主塊的是新記錄(未保存),在子塊的when-create-record裡面取主塊的任何東西,居然是主塊的上一次獲得焦點的記錄的東西;連用取塊的當前記錄也是上一次獲得焦點的記錄