FORM界面批量处理-全选框实现

全选框实现方法多种多样,这里只介绍两种

方法一:触发器式,优点程序简单,缺点颜色单调不突出

1.      在数据块和控制块上分别创建check box

2.      设置check box选中与为选中的值 Y/N和初始值

3.  

在数据块check box下触发器WHEN-CHECKBOX-CHANGED中调用程序

PROCEDURE check_box IS
    BEGIN
        IF :HEADER.check_box = 'Y' THEN
            --:HEADER.count := 1;
            NULL;--特殊用途,可选
        ELSE
            --:HEADER.count := 0;
             NULL;
        END IF;
END check_box;


4.      在数据块下建立BLOCK级触发器CHECK_ALL_RECORDS调用程序

PROCEDURE check_all_records IS
BEGIN
  --fnd_message.debug('PACKAGE BODY headers IS PROCEDURE check_all_records IS');
  IF :control.check_header_all = 'Y' THEN
    IF :header.check_box = 'N' OR :header.check_box IS NULL THEN
      :header.check_box := 'Y';
      --  :line.count     := 1;
    END IF;
  ELSE
    IF :header.check_box = 'Y' THEN
      :header.check_box := 'N';
      -- :line.count     := 0;
    END IF;
  END IF;

  --fnd_message.debug('PACKAGE BODY headers IS PROCEDURE check_all_records IS');

END check_all_records;


 

5.      在控制块下的check box CHECK_HEADER_ALL下建立触发器WHEN-CHECKBOX-CHANGED调用程序

 

PROCEDURE check_header_all IS
    BEGIN
    
    	  app_record.for_all_records('HEADER', 'CHECK_ALL_RECORDS');
END check_header_all;

 

6.      在需要处理的地方循环判断处理

 

PROCEDURE apply IS
v_count number;
v_line_num number;
BEGIN
  go_block('HEADER'); --跳到目的数据
  first_record; --从第一条记录开始循环
  LOOP
    
    IF :header.check_box = 'Y' THEN
    v_count := v_count + 1;
    --fnd_message.debug('循环处理次数');
     AP_INVOICE_LINES_ALL_PRIVATE.INSERT_ROW (X_LINE_NUM =>v_line_num,
     																					P_FLAG =>'APPLY',
     																					P_AMOUNT =>:header.AMOUNT);
     
     AP_DISTRIBUTIONS_PRIVATE.INSERT_ROW (P_LINE_NUM =>v_line_num,
     																			P_FLAG =>'APPLY',
     																			P_AMOUNT =>:header.AMOUNT,
     																			P_INVOICE_ID => :parameter.G_INVOICE_ID);
     
     LINE_PRIVATE.insert_row (P_LINE_NUM =>v_line_num,P_FLAG =>'APPLY');
      -- :line.CURRENT_RECORD_INDICATOR := 'Y'; --将指定行的复选框设置为选中
      --  BATCH_PROCESSING. EVENT('WHEN-MOUSE-CLICK', 'LINE');
      DOCOMMIT;
    END IF;
  
    EXIT WHEN :system.last_record = 'TRUE';
  
    next_record;
  
    END LOOP;
    --fnd_message.debug('循环处理次数-----');
  --commit;
  DOCOMMIT;
  first_record;
  go_block('HEADER');
  
    :parameter.g_query_find := 'TRUE';
    app_find.find('HEADER');
    :parameter.g_query_find := 'FALSE';
END apply;

方法二:选中与未

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值