2016-12-16 33 views
2

我對APEX來說相當新,但是我正在變得越來越複雜,所以我需要一些幫助。我有一個帶有複合主鍵的表格形式的對話框窗體(S_IDDEPARTMENT_ID)。我將通過APEX_ITEM.SELECT_LIST方法添加一個選擇列表作爲最後一列有兩個值(Approve:0;Reject:1)和一個提交按鈕。如果用戶至少將一條記錄標記爲Reject,則一旦提交頁面,我想從表格形式更新所選記錄中的兩個隱藏字段。如果用戶選擇所有記錄爲Approve,那麼我需要在另一個表中更新狀態和日期。所有記錄的選擇列表的缺省值是ApproveAPEX:將選擇列表添加到表格表格,然後根據值進行處理

我對SQL和PL/SQL非常好,但是一旦我添加了APEX_ITEM.SELECT_LIST,我意識到可能需要使用JavaScript,這就是我陷入困境的原因。如果我在表中添加一個字段,然後將SELECT列表綁定到表中,我可能只需要用PL/SQL就可以知道它,但是後來我有一些不必要的表字段,我試圖避免。我想用「虛擬」欄來解決它。

任何想法?

預先感謝您。

回答

1

當您使用的apex_item.select_list函數(或任何apex_item封裝的另一功能)APEX允許您使用apex_application.g_fXX集合,其中XX - 數,其中傳遞作爲第一參數。這些集合包含表格形式的數據,可以在頁面提交後通過PL/SQL進行訪問。
比方說,我們有一個表:

create table tab_form (
s_id number, 
department_id number, 
field_to_update varchar2(100)); 

insert into tab_form (s_id, department_id, field_to_update) values (1, 1, 'field is not updated'); 
insert into tab_form (s_id, department_id, field_to_update) values (1, 2, 'field is not updated'); 
insert into tab_form (s_id, department_id, field_to_update) values (1, 3, 'field is not updated'); 
insert into tab_form (s_id, department_id, field_to_update) values (2, 1, 'field is not updated'); 
insert into tab_form (s_id, department_id, field_to_update) values (2, 2, 'field is not updated'); 
insert into tab_form (s_id, department_id, field_to_update) values (2, 3, 'field is not updated'); 
insert into tab_form (s_id, department_id, field_to_update) values (3, 1, 'field is not updated'); 
insert into tab_form (s_id, department_id, field_to_update) values (3, 2, 'field is not updated'); 
insert into tab_form (s_id, department_id, field_to_update) values (4, 3, 'field is not updated'); 

你需要做以下。用這樣的查詢創建報告:

select APEX_ITEM.TEXT(1, s_id) S_ID, 
     APEX_ITEM.TEXT(2, department_id) DEPARTMENT_ID, 
     FIELD_TO_UPDATE, 
     APEX_ITEM.SELECT_LIST(3, null, 'Approve;0,Reject;1', null, 'YES', null, '%') ar 
    from TAB_FORM 

使用apex_item包開始使用集合g_f01g_f02g_f03的。接下來,創建一個按鈕來提交和一個進程,當按下按鈕Submit時,該進程將被執行。該過程可能包含如下代碼:

begin 
    forall i in 1 .. apex_application.g_f03.count 
    update tab_form 
     set field_to_update = case when apex_application.g_f03(i) = '0' then 'approved by the user' 
            when apex_application.g_f03(i) = '1' then 'rejected by the user' 
            else 'the user hasn''t decided yet' end 
    where s_id = apex_application.g_f01(i) 
     and department_id = apex_application.g_f02(i); 
end; 

在此代碼中,您可以實現處理用戶輸入所需的任何邏輯。

你可以看到這個例子在這裏在頁面上:https://apex.oracle.com/pls/apex/f?p=34599:8
Submit按鈕執行上面的代碼中,Reset按鈕改變值設置爲默認。

+0

謝謝你,這很好,很直接。 – user7308691

相關問題