Sabtu, 25 Januari 2014

Shuttle Item on APEX

Pada posting kali ini saya akan membahas bagaimana memakai Shuttle Item pada APEX. yang meliputi bagaimana :
  • Membuat default value berdasarkan isi tabel.
  • Submit kedalam tabel.
  • Melakukan filter nilai lihat detil di post ini : Enhanced Shuttle Item by Christoper Beck.
  • Dynamic Action (DA) terhadap Shuttle Item untuk mengambil nilai.
  • Dynamic Action (DA) terhadap Shuttle Item untuk melakukan query thd report EMP-DEPT.
Skenario kita adalah table EMP sebagai source pegawai dan EMP_ASSIGN sebagai data pegawai yang telah dipilih dalam Shuttle Ittem. Table EMP_ASSGIN hanya berisi satu kolom atau lebih yang menyimpan data EMPNO dan EMPNAME.

  • Membuat default value berdasarkan isi tabel.
Pada bagian ini anda harus sudah membuat shuttle item (PXX_SELECTED_EMPLOYEES) dengan query sbb:
SELECT ENAME
     , EMPNO
  FROM EMP
ORDER by 1
Lalu pada bagian render before header buatlah process : GET_SELECTED:

declare
 l_emp_array wwv_flow_global.vc_arr2;
 l_list varchar2(32767);
begin
 -- get all selected emp into array
 select empno 
   bulk collect
  into l_emp_array
  from emp_assign;
 -- convert array to colon seperated string
  l_list := apex_util.table_to_string(l_emp_array,':');
 :PXX_SELECTED_EMPLOYEES := l_list;
end;

Proses selanjutnya adalah bagaimana cara melakukan submit pegawai yang dipilih kedalam sebuah tabel.
  • Submit kedalam tabel.
Pada bagian submitting page buatlah sebuah proces : SUBMIT_ASSIGNMENT :
DECLARE
v_selected APEX_APPLICATION_GLOBAL.VC_ARR2;
BEGIN
 --delete existing assignment
 delete emp_assign;

 -- Convert the colon separated string into an array
 v_selected := APEX_UTIL.STRING_TO_TABLE(:PXX_SELECTED_EMPLOYEES);

 -- Loop over array and insert into table
 FOR i IN 1..v_selected.count LOOP
   insert into emp_assign
     (empno)
   values
     (v_selected(i));
END LOOP;
END;

Lalu proses selanjutnya adalah bagaimana memberi sebuah proses DA thd shuttle, dalam contoh ini kita akan mengambil nilai EMPNO yang dipilih kedalam sebuah text item : PXX_SELECTED_EMPNO.
  • Dynamic Action (DA) terhadap Shuttle Item untuk mengambil nilai.
Pada proses ini buatlah DA thd PXX_SELECTED_EMPLOYEES beri nama :shuttle_changed dengan event : CHANGE. dengan kondisi is null, ini adalah bagian tricky khusus untuk tipe item shuttle, karena untum item biasa kita tidak pelu membuat kondisi biasanya :D.

Lalu pada TRUE action lakukan proses action Set Value dengan PL/SQL Expression : null.
Pada FALSE action Set Value dengan Javascript Expression :
$v("PXX_SELECTED_EMPLOYEES")
.
Keduanya terhadap Effected Elements : item : PXX_SELECTED_EMPNO.

Beres....

Keterangan :

Tidak ada komentar :

Posting Komentar