Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

เพิ่มประสิทธิภาพ Oracle Forms ด้วย Multi-Selection ใช้ APP_MULTI Package

Oracle® APP_MULTI Package ช่วยให้คุณเพิ่มฟังก์ชัน Multi-Selection ให้กับ Form ตัวเลือกนี้มีอยู่ใน APPCORE Library

โดยการใช้ APP_MULTI Package คุณสามารถเลือก Record เดียวหรือหลาย Records และประมวลผลตามต้องการ ภาพต่อไปนี้แสดงตัวอย่างการเลือก Record แบบสุ่ม:

เพิ่มประสิทธิภาพ Oracle Forms ด้วย Multi-Selection ใช้ APP_MULTI Package

แหล่งที่มารูปภาพ: 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_record

  • KEY-CREREC: (ระดับ Block) ยิงเมื่อคุณสร้าง Record ใหม่ เทียบเท่าคำสั่ง create_record

  • KEY-DELREC: (ระดับ Block) ยิงเมื่อคุณลบ Record ที่มีอยู่ เทียบเท่าคำสั่ง delete_record

  • PRE-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 หรือ Disable 
  • APP_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