|
|
本帖最后由 irene 于 2012-8-28 10:37 编辑
如何提取上月数据,我的解决方案如下:
在视图中新建一个操作按钮,类型为“创建”,在动作执行前脚本总增加下面代码,- var sub = getCurrentDocument(); //获取当前文档
- var process = new Packages.cn.myapps.core.dynaform.document.ejb.DocumentProcessBean(getApplication());
- var params = new Packages.cn.myapps.base.action.ParamsTable();
- var user = getWebUser();
- var doc1 = new Packages.cn.myapps.core.dynaform.document.ejb.Document(); //实例化子记录文档对象
- var today = getCurDate("yyyy-MM-dd");
- var day = parseDate(today,"yyyy-MM-dd");
- var parent = getParentDocument();
- var datevalue = parent.getItemValueAsDate("时间");
- $PRINTER.println("-----------------------today---------"+today);
- $PRINTER.println("-----------------------parent---------"+parent);
- var sql="SELECT * FROM tlk_浆料报废率 WHERE tlk_浆料报废率.PARENT IN (SELECT tlk_公司质量分目标.ID FROM tlk_公司质量分目标 WHERE tlk_公司质量分目标.ITEM_时间=DATE_ADD('" + datevalue +"',INTERVAL -1 MONTH))";
- datas=queryBySQL(sql);
- $PRINTER.println("-----------------------datas.size()---------"+datas.size());
- if(datas!=null && datas.size()>0)
- {
- for(var iter = datas.iterator();iter.hasNext();)
- {
- var docxj = iter.next();
- if(docxj!=null)
- {
- doc1.setFormid('11e1-7414-20f96a92-85b7-f70b03f9aa7c');
- doc1.setFormname('办公自动化/质量管理报表/质量分目标/浆料报废率');
- doc1.setAuthor(user.getId());
- doc1.setIstmp(false);
- doc1.setApplicationid(getApplication());
- doc1.setDomainid(user.getDomainid());
- doc1.setParent(parent.getId());
- //doc1.setId(xszbid);
- $PRINTER.println("------parentID-------"+parent.getId());
- doc1.addStringItem("产品名称",docxj.getItemValueAsString("产品名称"));
- doc1.addStringItem("废品数量",docxj.getItemValueAsString("废品数量"));
- doc1.addStringItem("总生产数量",docxj.getItemValueAsString("总生产数量"));
- process.doCreate(doc1);
- }
- }
- }
复制代码 问题:
1、如上月数据只有一条,该代码通过;如上月数据有多条时,在插入第二条记录时出错,并提示主键重复,该问题如何解决;
2、如视图为网格视图,则该代码不执行;
出错log
环境如下:
obpm:2.5sp5 10357
服务端:windows server 2008r2
客户端:win7,ie9 |
|