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

ใช้แพ็คเกจ Oracle Forms APP_MULTI

แพ็คเกจ Oracle® APP_MULTI ช่วยให้คุณสามารถเพิ่มฟังก์ชันการทำงานแบบเลือกได้หลายแบบลงในแบบฟอร์ม ตัวเลือกนี้มีอยู่ใน APPCORE Library

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

ใช้แพ็คเกจ Oracle Forms APP_MULTI

ที่มาของภาพ :https://i36.me/images/oracle/ebs/ebs_frm_lnchse_with_app_multi_01.jpg

ฟังก์ชันการทำงาน

แพ็คเกจ APP_MULTI ช่วยให้คุณสามารถดำเนินการดังต่อไปนี้:

  • คลิกที่ระเบียนเดียวเพื่อเลือก

  • กดปุ่ม Ctrl ค้างไว้แล้วคลิกบนหลายระเบียนเพื่อเลือกหลายระเบียนพร้อมกัน

  • เลือก เลือกทั้งหมด จากเมนูแอปพลิเคชันเพื่อเลือกบันทึกทั้งหมด

  • เลือก ยกเลิกการเลือกทั้งหมด จากเมนูแอปพลิเคชันเพื่อยกเลิกการเลือกรายการที่เลือกทั้งหมด

  • คลิกระเบียนแรก และกดแป้น shift ค้างไว้ในขณะที่คุณคลิกระเบียนสุดท้ายตามลำดับเพื่อเลือกระเบียนที่อยู่ติดกันหลายรายการ

เหตุการณ์แพ็กเกจ APP_MULTI

แพ็คเกจ APP_MULTI ตอบสนองต่อเหตุการณ์ต่อไปนี้ในแบบฟอร์ม:

  • คีย์-CLRFRM :(ระดับแบบฟอร์ม) ตรวจสอบระเบียนก่อนที่จะล้างแบบฟอร์ม ใช้ตัวอย่าง:APP_MULTI.EVENT('KEY-CLRFRM');

  • คีย์-CLRREC :(ระดับบล็อก) เริ่มทำงานเมื่อคุณล้างบันทึกปัจจุบัน เทียบเท่ากับ clear_record คำสั่ง

  • คีย์-CREREC :(ระดับบล็อก) เริ่มทำงานเมื่อคุณสร้างระเบียนใหม่ เทียบเท่ากับ create_record คำสั่ง

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

  • Pre-BLOCK :(ระดับบล็อก) เริ่มทำงานเมื่อคุณเข้าสู่บล็อก

  • โพสต์บล็อก :(ระดับบล็อก) ยิงเมื่อคุณออกจากบล็อก

  • SELECT_ALL :(ระดับบล็อก) เริ่มทำงานเมื่อคุณเลือกระเบียนทั้งหมด

  • DESELECT_ALL :(ระดับบล็อก) เริ่มทำงานเมื่อคุณยกเลิกการเลือกระเบียนทั้งหมด

  • เมื่อ-ล้าง-บล็อก :(ระดับบล็อก) เริ่มทำงานเมื่อคุณเคลียร์บล็อก

  • เมื่อ-เมาส์-คลิก :(ระดับบล็อก) เริ่มทำงานเมื่อคุณคลิกเมาส์

  • เมื่อ-ใหม่-บันทึก-อินสแตนซ์ :(ระดับบล็อก) เริ่มทำงานเมื่อคุณสร้างหรือสืบค้นข้อมูลในบล็อก

สร้างทริกเกอร์ด้วยตนเอง

คุณต้องสร้างทริกเกอร์ที่จำเป็นและเรียก APP_MULTI.EVENT อย่างชัดเจน โดยส่งชื่อของเหตุการณ์ที่กำลังจัดการ ดังแสดงในตัวอย่างต่อไปนี้:

PROCEDURE event(p_event_name VARCHAR2,p_blockname
VARCHAR2 DEFAULT NULL);

ตัวอย่างเช่น KEY-CLRREC ทริกเกอร์สามารถทำได้ง่ายเพียงคำสั่งต่อไปนี้:

APP_MULTI.EVENT('KEY-CLRREC');

หมายเหตุ: ขั้นตอนยอมรับอาร์กิวเมนต์ตัวเลือก p_blockname . หากคุณไม่ส่ง p_blockname , ขั้นตอนใช้ค่าของ SYSTEM.TRIGGER_BLOCK .

เหตุการณ์การเลือกและการยกเลิกการเลือก

เมื่อคุณใช้ MULTI_RETURN_ACTION ที่กำหนดเอง ทริกเกอร์ (ทั้งในบล็อคข้อมูลหรือที่ระดับบนสุดของแบบฟอร์ม) ระบบจะแจ้งให้คุณทราบถึงการเลือกและการยกเลิกการเลือกระเบียน ทริกเกอร์เริ่มทำงานหลังจากการเลือกหรือยกเลิกการเลือกแต่ละรายการหรือบันทึกเป็นกลุ่ม

ตัวแปรทริกเกอร์

คุณสามารถใช้ตัวแปรต่อไปนี้ในทริกเกอร์:

  • GLOBAL.APPCORE_MULTI_BLOCK global:มีชื่อบล็อคข้อมูลที่ได้รับผลกระทบจากการเลือกหรือยกเลิกการเลือกบันทึก

  • GLOBAL.APPCORE_MULTI_ACTION global:มีค่าใดๆ ดังต่อไปนี้:

    - **'RECORD\_SELECTED'**: When a record is selected
    
    - **'RECORD\_DESELECTED'**: When a record is deselected
    
    - **'LABEL\_CHANGE'**: When the **Select All** or **Deselect All** menu
      items are enabled or disabled
    
  • APP_MULTI.LOOPING ตัวแปรแพ็คเกจ:มีค่า TRUE หรือ FALSE ขึ้นอยู่กับว่าคุณเรียก MULTI_RECORD_ACTION ภายในวง

ดึงข้อมูลที่เลือกในแบบฟอร์ม

สำหรับแต่ละบล็อคข้อมูล แพ็คเกจ APP_MULTI มีกลุ่มเรคคอร์ดที่มีหมายเลขของเร็กคอร์ดที่เลือกอยู่ในปัจจุบัน

คุณสามารถทำงานต่อไปนี้โดยระบุชื่อบล็อกข้อมูล:

  • ใช้ฟังก์ชัน **APP_MULTI.GET_GROUP_COL เพื่อเข้าถึง เท่านั้น ของกลุ่มระเบียน คอลัมน์สำหรับบล็อกข้อมูลเฉพาะ

  • ใช้ APP_MULTI.GET_GROUP_COUNT เพื่อรับจำนวนเรคคอร์ดที่เลือก

ตัวอย่างเช่น ให้บล็อก W_JOBS และฟิลด์WIP_ENTITY_ID คุณสามารถพิมพ์ ID ของงานที่เลือกได้โดยใช้รหัส 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 คุณสามารถประมวลผลข้อมูลจำนวนมากในฟอร์ม Oracle ที่กำหนดเองได้ แพ็คเกจนี้ช่วยให้คุณได้รับรายละเอียดของข้อมูลจำนวนมากที่ผู้ใช้เลือกในแบบฟอร์มมาตรฐาน คุณสามารถใช้ในรูปแบบส่วนบุคคลหรือ custom.pll โค้ดสำหรับเพิ่มฟังก์ชันที่กำหนดเองในรูปแบบ Oracle มาตรฐาน

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังแชทตอนนี้เพื่อเริ่มการสนทนาได้

เรียนรู้เพิ่มเติมเกี่ยวกับฐานข้อมูล