天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
查看: 3005|回复: 0

[表单-包含元素&选项卡] 主表刷新触发子表自动添加记录【主表刷新触发子表自动添加记录 包含元素选项卡】

[复制链接]
irene 发表于 2012-5-17 15:03:50 | 显示全部楼层 |阅读模式
Q:需求:主表中有一个字段为“姓名”,子表中有一个字段为“曾用名”。主表输入姓名后,自动向子表插入一条“曾用名”字段值与“姓名”字段值相同的记录。该如何实现?
A:在主表中添加一个隐藏字段。“姓名”字段要勾选“刷新”,隐藏字段和包含元素要勾选“重计算”。
在隐藏字段的值脚本中写类似如下脚本,作用为“自动向子表添加记录”。
  1. var value =getItemValueAsString("姓名");
  2. var name ;
  3. var docid = getId();
  4. var parentid = getCurrentDocument().getId();
  5. var sql = "select * from tlk_主表 where ID = '" + parentid+ "' ";
  6. var datas = queryBySQL(sql);
  7. if(datas!=null){//获取主表当前文档“姓名”字段的值
  8.          for(var iterator = datas.iterator();iterator.hasNext();){
  9.        var doc = iterator.next();
  10.        name= doc.getItemValueAsString("姓名");
  11.         }
  12. }
  13. var process = getDocumentProcess();     
  14. var formProcess = getFormProcess();
  15. var subform = formProcess.doView("11e1-9e7e-b6fd0ad9-90ed-ad9fb08997f8");//子表的formid
  16. var doc = process.doNew(subform,getWebUser(),createParamsTable());
  17. doc.setParent(parentid);
  18. doc.addStringItem("曾用名",value);
  19. if(value!=""){//如果主表“姓名”字段不为空,且主表“姓名”字段与子表“曾用名”字段的值不相等,则添加一条记录
  20.         if(!(value.equals(name))){
  21.                 process.doCreate(doc);
  22.         }
  23. }
复制代码
由于点击表单保存按钮,会自动向子表添加两条相同的记录。所以还需要在保存按钮的动作执行后脚本写脚本删除相同的记录。脚本类似:
  1. var value = getItemValueAsString("姓名");//主表中的“姓名”字段
  2. var sql = "select * from tlk_曾用名 where item_曾用名='"+value+"'";//tlk_曾用名是子表
  3. println("sql===="+sql);
  4. var num = countBySQL(sql);//主表保存后,子表中的“曾用名”字段值与主表当前记录“姓名”字段值相等的记录数
  5. println("num===="+num);
  6. var datas = queryBySQL(sql);
  7. if(num!=0&&datas!=null){
  8. for(var iterator = datas.iterator();iterator.hasNext();){
  9. var doc = iterator.next();
  10. var time = doc.getLastmodified();
  11. if(num==1){//由于进行保存操作后会自动添加两条相同的记录,这两条记录的最后修改时间是一样的,所以可以根据记录的最后修改时间删除多余的两条记录
  12.         var sql1 = "delete from tlk_曾用名 where LASTMODIFIED='"+time+"'";
  13. deleteByDSName("myApps功能示例_DS",sql1);
  14. break;
  15. }
  16. num--;
  17. }
  18. }
复制代码

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-12 14:39

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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