起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 35889|回复: 27

Table类型使用说明

  [复制链接]

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2013-1-7 09:11:53 | 显示全部楼层 |阅读模式
Table类型是指com.justep.system.data.Table类

主要用法
1、在UI中从Action获得数据,并装入data组件——在UI中调用Action,Action返回Table类型的变量,在UI中即可获得数据,并装入data组件
2、将UI中data组件的数据传给Action——定义Action的参数为Table类型,在UI中调用Action时传入data组件的数据,在Action中访问Table类型的参数,即可取到data组件的数据
3、报表获取数据——reportData组件关联一个Action,这个Acton只要返回Table类型的参数,报表就可以展现

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-7 09:47:30 | 显示全部楼层

取值、赋值

  1.     Row r = it.next();        
  2.     Object v = r.getValue("sMainOrgID");
  3.     r.setValue("sSafeLevelID", "");
  4.     r.setValue("sName", null);
  5.     r.setValue("sNumb", 0);
复制代码
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-7 09:15:42 | 显示全部楼层

定义Action返回值为Table类型

Action的返回值类型,在其对应的java方法中直接指定即可。
例如:
  1. public static Table select() {
  2.     Table table = KSQL.select("select ER_WPXX.* from ER_WPXX ER_WPXX", null, "/erp/buy/data", null);
  3.     table.getProperties().put(Table.PROP_NAME_ROWID, "ER_WPXX");
  4.     return table;
  5. }
复制代码
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-7 09:19:17 | 显示全部楼层

在java中返回Table类型

1、使用KSQL.select方法
例如
  1. import com.justep.system.data.KSQL;

  2. String query = "select t.sOrgFID, t.sOrgFName, t.sOrgName from SA_ResourceControl t where t.sResourceID=:resource and t.sTypeID=:type";
  3. HashMap<String, Object> params = new HashMap<String, Object>();
  4. params.put("type", typeID);
  5. params.put("resource", resourceID);
  6. Table table = KSQL.select(query, params, "/system/data", null);
复制代码
2、使用SQL.select方法
例如
  1. import com.justep.system.data.SQL;

  2. String oracle = "SELECT RPRODUCTID , RPRODUCTNAME , (SELECT RCATEGORYNAME FROM DEMO_REPORTPRODUCTCATEGORY WHERE DEMO_REPORTPRODUCTCATEGORY.RCATEGORYID = DEMO_REPORTPRODUCTS.RCATEGORYID) AS RCATEGORYNAME , (SELECT RCOMPANYNAME FROM DEMO_REPORTSUPPLIERS WHERE DEMO_REPORTSUPPLIERS.RSUPPLIERID = DEMO_REPORTPRODUCTS.RSUPPLIERID)AS RCOMPANYNAME, RQUANTITYPERUNIT,RUNITPRICE,RUNITSINSTOCK FROM DEMO_REPORTPRODUCTS";
  3. String mssql = "SELECT RPRODUCTID, RPRODUCTNAME, (SELECT RCATEGORYNAME FROM DEMO_REPORTPRODUCTCATEGORY WHERE DEMO_REPORTPRODUCTCATEGORY.RCATEGORYID = DEMO_REPORTPRODUCTS.RCATEGORYID) AS RCATEGORYNAME , (SELECT RCOMPANYNAME FROM DEMO_REPORTSUPPLIERS WHERE DEMO_REPORTSUPPLIERS.RSUPPLIERID = DEMO_REPORTPRODUCTS.RSUPPLIERID)AS RCOMPANYNAME, RQUANTITYPERUNIT,RUNITPRICE,RUNITSINSTOCK FROM DEMO_REPORTPRODUCTS";
  4. HashMap<String,String> sqlMap = new HashMap<String,String>();
  5. sqlMap.put(SQL.DEFAULT_DB_NAME,mssql);
  6. sqlMap.put(DatabaseProduct.ORACLE.name(),oracle);
  7. sqlMap.put(DatabaseProduct.MSSQL.name(),mssql);
  8. sqlMap.put(DatabaseProduct.KINGBASE.name(),oracle);
  9. sqlMap.put(DatabaseProduct.SYBASE.name(),mssql);
  10. sqlMap.put(DatabaseProduct.DB2.name(),oracle);
  11. sqlMap.put(DatabaseProduct.MYSQL.name(),mssql);
  12. return SQL.select(sqlMap,null,"/demo/report/data");
复制代码
3、使用BizUtils.resultSet2Table方法
例如
  1. import com.justep.system.util.BizUtils;

  2. Connection conn = ModelUtils.getConnection("/x5demo/rich/data");
  3. Statement exeistStmt = conn.createStatement();
  4. String sql = "select fGoodsCode,fGoodsName from X5_Goods";
  5. ResultSet rs = exeistStmt.executeQuery(sql);
  6. Table table = BizUtils.resultSet2Table(rs, (Model)null);
复制代码
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-7 09:46:13 | 显示全部楼层

遍历Table

  1. Iterator<Row> it = table.iterator();
  2. while (it.hasNext()){
  3.     Row r = it.next();
  4. }
复制代码
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-7 09:49:40 | 显示全部楼层

删除行

需要先setKeyColumn,设置一下主键列
  1.     table.getMetaData().setKeyColumn("TT_WPXX");                  
  2.     table.deleteRows("0B60DFA2214949F79D120C54B51642D1");
复制代码
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-7 09:56:21 | 显示全部楼层

在saveAction的执行前事件中获得客户新增、修改、删除的数据

  1.         public static void goodsTypeProcessBeforeSaveX5_GoodsTypeAction() {
  2. //获得table参数
  3.                 Table table = (Table)ContextHelper.getActionContext().getParameter("table");
  4. //获得所有修改的行
  5.                 Iterator<Row> rows = table.iterator(com.justep.system.data.ModifyState.EDIT );
  6.                 Row row;
  7.                 Collection<String> list=table.getColumnNames();
  8.                 String[] strArray1 = (String[])list.toArray(new String[0]);
  9.                 while (rows.hasNext()){
  10.                         row = rows.next();
  11.                         for(int i=0;i<table.getColumnCount();i++){
  12.                                 if(row.isModified(strArray1[i])){
  13.                                         System.out.println(row.getValue(i));
  14.                                         System.out.println(row.getOldValue(strArray1[i]));
  15.                                 }
  16.                         }
  17.                 }        
  18. //获得所有新增的行
  19.                 rows = table.iterator(com.justep.system.data.ModifyState.NEW );
  20.                 while (rows.hasNext()){
  21.                         row = rows.next();
  22.                         for(int i=0;i<table.getColumnCount();i++){
  23.                                 System.out.println(strArray1[i]+"-"+row.getValue(strArray1[i]));
  24.                         }
  25.                 }        
  26. //获得所有被删除的行
  27.                 rows = table.iterator(com.justep.system.data.ModifyState.DELETE );
  28.                 while (rows.hasNext()){
  29.                         row = rows.next();
  30.                         for(int i=0;i<table.getColumnCount();i++){
  31.                                 System.out.println(strArray1[i]+"-"+row.getValue(strArray1[i]));
  32.                         }
  33.                 }        
  34.         }
复制代码
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
 楼主| 发表于 2013-1-7 10:05:33 | 显示全部楼层

设置Table主键、总记录数、更新方式等信息

设置主键
table.getProperties().put(Table.PROP_NAME_ROWID, “概念名”);

设置总记录数
table.getProperties().put(Table. PROP_DB_COUNT,总记录数);
设置table的总记录数,数据装入到data组件后,可以使用data组件的getTotal()方法取到总记录数

设置更新方式
table.setUpdateMode(UpdateMode.WHERE_VERSION);
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴

63

主题

235

帖子

807

积分

高级会员

Rank: 4

积分
807
QQ
发表于 2013-1-13 17:24:05 | 显示全部楼层
收藏
微笑刺客

197

主题

824

帖子

1889

积分

金牌会员

Rank: 6Rank: 6

积分
1889
QQ
发表于 2013-1-19 10:00:00 | 显示全部楼层
好贴,收藏了
QQ:574178224
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-24 22:27 , Processed in 0.050181 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表