OAF_开发系列29_实现OAF中批次处理迭代器RowSet/RowSetIterator(案例)

简介: 20150814 Created By BaoXinjian 一、摘要 在Oracle官方指南和例子中,一般遍历记录,都是通过RowSetIterator的方式进行,RowSetIterator的用法,通过为VO创建一个迭代器来 循环每一个行 但在实际应用也可以通过Row和Rowset的方式进行遍历记录 具体情况具体分析   1.

20150814 Created By BaoXinjian

一、摘要


在Oracle官方指南和例子中,一般遍历记录,都是通过RowSetIterator的方式进行,RowSetIterator的用法,通过为VO创建一个迭代器来 循环每一个行

但在实际应用也可以通过Row和Rowset的方式进行遍历记录

具体情况具体分析

 

1. 选中记录和记录集合的三种方式

(1). 通过Row选中第一条记录:vo.getFirstFilteredRow("SelectFlag", new String("Y"));

(2). 通过RowSet选中所有被选中的记录:vo.getFiterredRow("SelectFlag", new String("Y"));

(3). 通过RowSetIterator选中所有记录:vo.createRowSetIterator("selectIter");

 

二、实施分析


Step1. 创建CO中的方法

(1). vo.getFirstFilteredRow("SelectFlag", new String("Y"));

(2). vo.getFiterredRow("SelectFlag", new String("Y"));

(3). vo.createRowSetIterator("selectIter");

Step2. 在CO具体控制代码,分析三种选中方案

public void processFormRequest(OAPageContext pageContext, 
                               OAWebBean webBean) {
    super.processFormRequest(pageContext, webBean);

    try { EmpManageAMImpl am = (EmpManageAMImpl)pageContext.getApplicationModule(webBean); EmployeesItaraterVOImpl vo = am.getEmployeesItaraterVO(); //方案1. 通过ROW获取第一个选中栏位 if ("select".equals(pageContext.getParameter(EVENT_PARAM))) { EmployeesItaraterVORowImpl row = (EmployeesItaraterVORowImpl) vo.getFirstFilteredRow("SelectFlag", new String("Y")); //获取记录集合 System.out.println("RowFirstEmployeeId=" + row.getEmployeeId()); } //方案2. 通过ROWSET获取所有选中栏位 if ("select".equals(pageContext.getParameter(EVENT_PARAM))) { Row[] rowset = vo.getFilteredRows("SelectFlag", new String("Y")); //获取记录集合 for (int i = 0; i < rowset.length; i++) { EmployeesItaraterVORowImpl row = (EmployeesItaraterVORowImpl)rowset[i]; //取得当前记录 System.out.println("RowsetEmployeeId=" + row.getEmployeeId()); } } //方案3. 通过RowSetIterator所有选中栏位 if ("select".equals(pageContext.getParameter(EVENT_PARAM))) { int rowcount = vo.getFetchedRowCount(); //取当前提取的记录集的记录数 RowSetIterator selectIter = vo.createRowSetIterator("selectIter"); //建立记录集的指示器 if (rowcount > 0) { selectIter.setRangeStart(0); //设置循环起点,相当于移动指针到第一条记录 selectIter.setRangeSize(rowcount); //设置循环次数 for (int i = 0; i < rowcount; i++) { EmployeesItaraterVORowImpl row = (EmployeesItaraterVORowImpl)selectIter.getRowAtRangeIndex(i); //取得当前记录 System.out.println("ItaraterEmployeeId=" + row.getEmployeeId()); } }
selectIter.closeRowSetIterator(); } } catch (Exception ex) { ex.printStackTrace(); } }

 

三、测试运行


Step1. 选中一条记录测试三种选中方式

Step2.  显示记录如下

Step3. 选中全部记录测试显示选中方式

Step4. 显示记录如下

 

Thanks and Regards

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
测试技术
OAF_开发系列24_实现OAF更新记录显示Record History(案例)
20150716 Created By BaoXinjian 一、摘要 OAF页面控件中显示记录历史信息有如下的限制: 1. 首先当然是后台的表结构中必须包含WHO字段列了 2. 基于的视图对象必须是非PL/SQL的可更新VO 3.
1023 0
|
Oracle 关系型数据库
OAF_开发系列20_实现OAF打印功能
ddddd   添加一个页面级的button区域:pagebuttonBar,在之下添加button item ,这里主要设置的参数有:采用默认的oaf的打印按钮的id名称: IcxPrintablePageButton,设置属性集为:/oracle/apps/fnd/attributesets...
1138 0
|
关系型数据库 测试技术
OAF_开发系列13_实现OAF通过Vector动态查询设置(案例)
20150715 Created By BaoXinjian 一、摘要 Oracle OAF Guide上介绍的标准客制化查询的方式,在多条件下进行查询 具体实现步骤如下 Step1.在controler中的processRequest 的方法中调用 (1).
1602 0
|
SQL Oracle 关系型数据库
OAF_开发系列10_实现OAF动态LOV设定
20150712 Created By BaoXinjian 一、摘要 要在OAF中动态创建LOV的功能是很复杂的一件事,本文所讲述的动态LOV创建场合用于事先不能知道页面上会有多少个LOV,而且LOV所使用的SQL查询,也是由用户交互而获得的。
893 0
|
测试技术
OAF_开发系列04_实现OAF查询4种不同的实现方式的比较和实现(案例)
2014-06-02 Created By BaoXinjian 一、摘要 OAF实现查询功能或需求,一般都会采用以下四种方式 (1). ResultBasedSearch 最简单的实现方式,将结果中某些栏位需要查询的栏位的属性search设定为true即可 (2).
1713 0
|
Web App开发
OAF_开发系列09_实现OAF预提取LOV设定(案例)
20150712 Created By BaoXinjian 一、摘要 1. 预取LOV(Look Ahead LOV) (1). 预取LOV最大的特点就是再也不需要每次都要烦人的弹出一个窗口让人选择了。
1117 0
|
SQL 数据库
OAF_开发系列03_实现OAF如何在保存前判断数据是否存在变更(案例)
2014-06-26 Created By BaoXinjian 一、摘要 在OAF的开发中,可能有这样的需求,在选择保存按钮时,如果存在改动的数据,则提交事务,保存到数据库中; 如果不存在改动的数据,就提示用户当前没有数据可更改; 解决时需要判断页面中所使用的视图对象是否发生过改动,存在多种方法   1. 调用OADBTransaction.isDirty()方法 此方法用于判断当前事务中,视图对象是否发生过变更。
1160 0
OAF_开发系列06_实现OAF属性集的介绍和开发Attribute Set(案例)
20150705 Created By BaoXinjian 一、摘要 EBS OAF开发中属性集(Attribute Set)的介绍和手工实现。 在OAF开发中就和Form开发中一样,有时也要给一些对象设置统一的特定属性。
1390 0
|
Oracle 关系型数据库 数据库
OAF_文件系列3_实现OAF多行表中附件功能AttachmentImage(案例)
20150727 Created By BaoXinjian 一、摘要 EBS OAF中如何在多行表中实现附件功能 在OAF中使用附件功能之前,要先明白Entity(实体)的概念。 一个Entity是Oracle E-BussinessSuite的一个数据对象,比如一个物料,一个订单或者一个订单行。
1726 0
OAF_EO系列6 - Delete详解和实现(案例)
2014-06-14 Created By BaoXinjian 一、摘要 在OAF中,似乎不是根据你光标所在的行来删除对应的记录,而是根据记录指针来删除,而这个指针又与你的光标位置无关 需要用代码来精确的定位.
1430 0