EBS FORM 复选框

本文介绍了如何在EBS FORM中使用内存表实现复选框功能。包括设置多选复选框CHECKED_FLAG和全选复选框SELECT_ALL的属性,以及在不同触发器事件中调用相应的包来处理复选框状态和数据。详细阐述了pre_query、post_query、KEY-CLRREC、KEY-EXEQRY等触发器中的操作,并提供了cux_choose_pkg和cux_checked_public_pkg两个包的相关代码示例。
摘要由CSDN通过智能技术生成

EBS FORM 复选框 内存表方式实现

Form 开发

  1. 在需要多选的块中添加多选复选框 CHECKED_FLAG,并按以下属性设置:
    Name CHECKED_FLAG
    Item Type Check Box
    Subclass Information CHECK BOX
    Value when Checked Y
    Value when Unchecked N
    Check Box Mapping of other Values N
    Data Type Char
    Maximum Length 20
    Initial Value N
    Database Item N

  2. 添加全选复选框 SELECT_ALL 并按以下属性设置:
    Name SELECT_ALL
    Item Type Check Box
    Subclass Information CHECK BOX
    Value when Checked Y
    Value when Unchecked N
    Check Box Mapping of other Values N
    Data Type Char
    Maximum Length 20
    Initial Value N
    Database Item N

  3. 在 Block 级 pre_query 触发器事件中清除表变量:
    cux_checked_public_pkg.delete_table;

  4. 在 Block 级 post_query 触发器中调用 cux_choose_pkg.post_query,在查询时将每条记录主键信息
    保存到表变量中,并判断全选是否勾选,如果勾选,则把记录的 checked_flag 标识位设置为’Y’
    cux_choose_pkg.post_query(p_select_all_field => ‘全选框名称’,
    p_source_block => ‘单选框所在块’,
    p_object_item1 => ‘关键字 1’,–表id
    p_object_item2 => ‘关键字 2’,
    p_object_item3 => ‘关键字 3’,
    p_object_item4 => ‘关键字 4’,
    p_object_item5 => ‘关键字 5’
    p_object_item6 => ‘关键字 6’,
    p_object_item7 => ‘关键字 7’,
    p_object_item8 => ‘关键字 8’);

  5. 在 Block 级 KEY-CLRREC 触发器中调用 cux_choose_pkg.clear_record 清除一条记录,如果为 Folder
    块则应在 App_Folder.event(‘KEY-CLRREC’));之后。
    cux_choose_pkg.clear_record (p_source_block => ‘单选框所在块’,
    p_select_all_field => ‘全选框名称’);

  6. 在 Block 级 KEY-EXEQRY 触发器中
    非 Folder 块
    :parameter.g_query_find := upper(‘true’);
    execute_query;
    :parameter.g_query_find := upper(‘false’);
    Folder 块
    :parameter.g_query_find := upper(‘true’);
    app_folder.event(‘KEY-EXEQRY’);
    :parameter.g_query_find := upper(‘false’);

  7. 在Checked_flag的Item级触发器
    WHEN-CHECKBOX-CHANGED中调用
    cux_choose_pkg.check_changed,如果勾选上则把当前的记录的 checked_flag 设置为’Y’,否则设置
    为’N’,并把全选框设置为’N’。

cux_choose_pkg.check_changed( p_source_block => '单选框所在块',
p_select_all_field => '全选框名称' );
  1. 在全选框 select_all 的 WHEN-CHECKBOX-CHANGED 触发器中调用 cux_choose_pkg.selected_all,如果勾选全选框,则先清空表变量,并以 Query All Records 方式查询 SourceBlock(即查询出所有符合条件的数据)
cux_choose_pkg.selected_all (p_source_block => '单选框所在块');
  1. 复位,如果数据处理后需要把选中的复选框复位,则调用 cux_choose_pkg.reset_all 方法删除表变量,并把全选框设置为’N’,并重新查询 Source Block。
cux_choose_pkg.reset_all(p_source_block => '单选框所在块',
p_select_all_field => '全选框名称');
  1. 为了屏蔽 f11 查询功能,增加 Block 级的 key- entqry 事件,事件代码与块 query_find 一致,,如果是 Folder 块,则应在 App_Folder.event(‘KEY-ENTQRY’)之前。
  2. 如果需要处理勾选数据,则调用 cux_checked_public_pkg.get_checked_tbl(l_object_tbl_opt).把选中的记录返回到表变量中。其中l_object_tbl_opt类型定义为
    cux_checked_public_pkg.object_tbl_opt。
    (因为在 Oracle Form 6i 开发工具不支持定义以 VARCHAR2为索引的表变量,为了使用 Row_id 为索引,将数据在 Package 中进行处理)
    cux_checked_public_pkg.get_checked_tbl(l_object_tbl_opt);
    使用时比较简单:如下例
    变量定义:
    l_tbl_count NUMBER;
    l_object_tbl_opt cux_checked_public_pkg.object_tbl_opt;
    使用:
cux_checked_public_pkg.get_checked_tbl(l_object_tbl_opt);
-- 判断是否有选中的记录
l_tbl_count := l_object_tbl_opt.COUNT;
IF (l_tbl_count <= 0) THEN
fnd_message.set_name('CUX',
'CUX_NO_SELECT_WARING');
fnd_message.error;
RAISE form_trigger_failure;
END IF;

Cux_test_pkg.process(…
p_object_tbl => l_object_tbl_opt,);

– 处理后重置多选及全选状态
cux_choose_pkg.reset_all(p_source_block => ‘BLOCK NAME’,
p_select_all_field => ‘SELECT ALL FIELD’);
附录代码:
cux_choose_pkg

PACKAGE cux_choose_pkg IS
   g_object_rec cux_checked_public_pkg.object_type;
  PROCEDURE post_query(p_select_all_field VARCHAR2
                      ,p_source_block     VARCHAR2
                      ,p_object_item1     VARCHAR2
                      ,p_object_item2     VARCHAR2 DEFAULT NULL
                      ,p_object_item3     VARCHAR2 DEFAULT NULL
                      ,p_object_item4     VARCHAR2 DEFAULT NULL
                      ,p_object_item5     VARCHAR2 DEFAULT NULL
                      ,p_object_item6     VARCHAR2 DEFAULT NULL
                      ,p_object_item7     VARCHAR2 DEFAULT NULL
                      ,p_object_item8     VARCHAR2 DEFAULT NULL);
  --全选
  PROCEDURE selected_all(p_source_block VARCHAR2);
  --复选框变化
  PROCEDURE check_changed(p_source_block     VARCHAR2
                         ,p_select_all_field VARCHAR2);
  --清除记录
  PROCEDURE clear_record(p_source_block     VARCHAR2
                        ,p_select_all_field VARCHAR2);
  --重置并查询
  PROCEDURE reset_all(p_source_block     VARCHAR2
                     ,p_select_all_field VARCHAR2);
END;
/
PACKAGE BODY cux_choose_pkg IS
  PROCEDURE post_query(p_select_all_field VARCHAR2
                      ,p_source_block     VARCHAR2
                      ,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值