Oracle® APP_MULTI Package ช่วยให้คุณเพิ่มฟังก์ชัน Multi-Selection ให้กับ Form ตัวเลือกนี้มีอยู่ใน APPCORE Library
โดยการใช้ APP_MULTI Package คุณสามารถเลือก Record เดียวหรือหลาย Records และประมวลผลตามต้องการ ภาพต่อไปนี้แสดงตัวอย่างการเลือก Record แบบสุ่ม:
แหล่งที่มารูปภาพ: https://i36.me/images/oracle/ebs/ebs_frm_lnchse_with_app_multi_01.jpg
ฟังก์ชันการทำงาน
APP_MULTI Package ช่วยให้คุณดำเนินการต่อไปนี้ได้:
- คลิกที่ Record เดียวเพื่อเลือก
- กดปุ่ม Ctrl ค้างไว้และคลิกที่หลาย Records เพื่อเลือกหลาย Records พร้อมกัน
- เลือก Select All จากเมนูแอปพลิเคชันเพื่อเลือกทั้งหมด
- เลือก Deselect All จากเมนูแอปพลิเคชันเพื่อยกเลิกการเลือกทั้งหมด
- คลิก Record แรก และค้างปุ่ม Shift ขณะคลิก Record สุดท้ายในลำดับ เพื่อเลือก Records ที่ติดกันหลายตัว
Events ของ APP_MULTI Package
APP_MULTI Package ตอบสนองต่อ Events ต่อไปนี้บน Form:
KEY-CLRFRM: (ระดับ Form) ตรวจสอบ Record ก่อนล้าง Form ตัวอย่างการใช้:
APP_MULTI.EVENT('KEY-CLRFRM');KEY-CLRREC: (ระดับ Block) ยิงเมื่อคุณล้าง Record ปัจจุบัน เทียบเท่าคำสั่ง
clear_recordKEY-CREREC: (ระดับ Block) ยิงเมื่อคุณสร้าง Record ใหม่ เทียบเท่าคำสั่ง
create_recordKEY-DELREC: (ระดับ Block) ยิงเมื่อคุณลบ Record ที่มีอยู่ เทียบเท่าคำสั่ง
delete_recordPRE-BLOCK: (ระดับ Block) ยิงเมื่อคุณเข้าสู่ Block
POST-BLOCK: (ระดับ Block) ยิงเมื่อคุณออกจาก Block
SELECT_ALL: (ระดับ Block) ยิงเมื่อคุณเลือกทั้งหมด
DESELECT_ALL: (ระดับ Block) ยิงเมื่อคุณยกเลิกการเลือกทั้งหมด
WHEN-CLEAR-BLOCK: (ระดับ Block) ยิงเมื่อคุณล้าง Block
WHEN-MOUSE-CLICK: (ระดับ Block) ยิงเมื่อคุณคลิกเมาส์
WHEN-NEW-RECORD-INSTANCE: (ระดับ Block) ยิงเมื่อคุณสร้างหรือ Query Record บน Block
สร้าง Trigger ด้วยตนเอง
คุณต้องสร้าง Trigger ที่จำเป็น และเรียก Procedure APP_MULTI.EVENT อย่างชัดเจน โดยส่งชื่อ Event ที่กำลังจัดการ ตามตัวอย่างต่อไปนี้:
PROCEDURE event(p_event_name VARCHAR2,p_blockname VARCHAR2 DEFAULT NULL);
ตัวอย่าง Trigger KEY-CLRREC อาจง่ายเพียงคำสั่งต่อไปนี้:
APP_MULTI.EVENT('KEY-CLRREC');
หมายเหตุ: Procedure ยอมรับ Argument ทางเลือก p_blockname หากคุณไม่ส่ง p_blockname Procedure จะใช้ค่าของ SYSTEM.TRIGGER_BLOCK
Events การเลือกและยกเลิกการเลือก
เมื่อคุณนำ Custom Trigger MULTI_RETURN_ACTION ไปใช้ (ไม่ว่าจะใน Data Block หรือระดับบนสุดของ Form) ระบบจะแจ้งเตือนคุณเกี่ยวกับการเลือกและยกเลิกการเลือก Record Trigger จะยิงหลังจากการเลือกหรือยกเลิกการเลือก Record แบบเดี่ยวหรือแบบกลุ่มทุกครั้ง
ตัวแปรของ Trigger
คุณสามารถใช้ตัวแปรต่อไปนี้ใน Trigger ได้:
GLOBAL.APPCORE_MULTI_BLOCK Global: มีชื่อ Data Block ที่ได้รับผลกระทบจากการเลือกหรือยกเลิกการเลือก Record
GLOBAL.APPCORE_MULTI_ACTION Global: มีค่าใดค่าหนึ่งต่อไปนี้:
- **'RECORD\_SELECTED'**: เมื่อ Record ถูกเลือก - **'RECORD\_DESELECTED'**: เมื่อ Record ถูกยกเลิกการเลือก - **'LABEL\_CHANGE'**: เมื่อเมนู **Select All** หรือ **Deselect All** ถูก Enable หรือ DisableAPP_MULTI.LOOPING Package Variable: มีค่า TRUE หรือ FALSE ขึ้นอยู่กับว่าคุณเรียก MULTI_RECORD_ACTION ภายใน Loop หรือไม่
ดึงข้อมูลที่เลือกบน Form
สำหรับแต่ละ Data Block APP_MULTI Package มี Record Group พร้อมหมายเลข Record ของ Record ที่เลือกอยู่
คุณสามารถดำเนินงานต่อไปนี้ได้โดยการระบุชื่อ Data Block:
ใช้ **APP_MULTI.GET_GROUP_COL Function เพื่อเข้าถึงคอลัมน์ Only ของ Record Group สำหรับ Data Block เฉพาะ
ใช้ APP_MULTI.GET_GROUP_COUNT เพื่อรับจำนวน Record ที่เลือก
ตัวอย่างเช่น กำหนด Discrete Jobs Form Block W_JOBS และ Field WIP_ENTITY_ID คุณสามารถพิมพ์ ID ของ Jobs ที่เลือกโดยใช้โค้ด PL/SQL ต่อไปนี้:
DECLARE record_number_column groupcolumn; selected_record_count NUMBER; BEGIN record_number_column := app_multi.get_group_col ('W_JOBS'); selected_record_count :=app_multi.get_group_count ('W_JOBS'); FOR i IN 1 .. selected_record_count LOOP DECLARE record_number NUMBER; v_wip_entity_id NUMBER; BEGIN record_number := GET_GROUP_NUMBER_CELL (record_number_column, i); GO_RECORD (record_number); v_wip_entity_id := NAME_IN ('W_JOBS.WIP_ENTITY_ID'); fnd_message.debug ( 'v_wip_entity_id' || v_wip_entity_id); EXCEPTION WHEN OTHERS THEN Null; END; END LOOP; END;
สรุป
ด้วย APP_MULTI Package คุณสามารถประมวลผลข้อมูลจำนวนมากใน Custom Oracle Forms ได้ Package นี้ช่วยให้คุณรับรายละเอียดข้อมูลจำนวนมากที่ผู้ใช้เลือกบน Standard Forms คุณสามารถใช้ได้ใน Form Personalization หรือโค้ด custom.pll เพื่อเพิ่มฟังก์ชันแบบกำหนดเองใน Standard Oracle Form
ใช้แท็บ Feedback เพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถแชทได้ทันทีเพื่อเริ่มการสนทนา
เรียนรู้เพิ่มเติมเกี่ยวกับ Databases