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

 找回密码
 注册成为天翎用户
楼主: shijian3509

报错了 不知道改改什么地方??

[复制链接]
 楼主| shijian3509 发表于 2012-5-10 10:46:25 | 显示全部楼层
staff_id 这个字段
purple 发表于 2012-5-10 11:16:23 | 显示全部楼层
您好,错误信息就是您staff_id这个字段值重复了。请您将数据库客户端该字段信息截图说明,谢谢。
 楼主| shijian3509 发表于 2012-5-14 11:11:01 | 显示全部楼层
本帖最后由 shijian3509 于 2012-5-14 11:12 编辑

现在问题是,我存的并不是同一条数据啊 ??  如果我存了同一条数据,汇报主键重复 无可厚非,可是为什么当我存入不同的数据时还是会报错呢??  我把源码给您帮我查看一下谢谢

var sql="select  * from  TLK_CONTRACT_MAIN  where ITEM_IF_TRY= '试用' and  DateDiff(ITEM_OVER_SHIYONG,'"+format(getToday(),"yyyy-MM-dd ")+"')=7";
var datas  = queryBySQL(sql);
var sql1="select  * from  TLK_CONTRACT_MAIN  where ITEM_IF_TRY!= '试用' and  DateDiff(ITEM_date_closed,'"+format(getToday(),"yyyy-MM-dd ")+"')=7";
var datas1 = queryBySQL(sql1);
var process = getDocumentProcess();     
var formProcess = getFormProcess();
var subform = formProcess.doView("11e1-38d4-704b239b-a4b2-efa39e5d9a0e");
//表单ID值。可以通过数据库客户端查看那张表的formid字段值就可以。
var doc = process.doNew(subform,getWebUser(),createParamsTable());
var department="";
var vid="";
var staff_name="";
var staff_id="";
var ht_type="";
var Sign_date;
var ht_name="";
var dossier_id=""
var over_ShiYong;
println("输出一下SQL:"+sql);
for(var iter = datas.iterator();iter.hasNext();){      
println("循环里面呢!");
var doc1 = iter.next();  
             if(doc1!=null){
                department=doc1.getItemValueAsString("department");
                staff_name=doc1.getItemValueAsString("staff_name");
                 staff_id=doc1.getItemValueAsString("staff_id");
                 ht_type=doc1.getItemValueAsString("ht_type");
                 Sign_date=doc1.getItemValueAsDate("Sign_date");
                 ht_name=doc1.getItemValueAsString("ht_name");
                 over_ShiYong=doc1.getItemValueAsDate("over_ShiYong");
                 dossier_id=doc1.getItemValueAsString("dossier_id");
                 vid=doc1.getId();
                   doc.addStringItem("department",department);        
                   doc.addStringItem("staff_name",staff_name);        
                   doc.addStringItem("staff_id",staff_id);
                   doc.addStringItem("ht_type",ht_type);
                   doc.addDateItem("Sign_date",Sign_date);
                   doc.addStringItem("ht_name",ht_name);
                   doc.addDateItem("ht_DateDue",over_ShiYong);
                   doc.addStringItem("dossier_id",dossier_id);
                   doc.addStringItem("vid",vid);
                     process.doCreate(doc);
                   println("结束了没事情了");
       }
println("结束了没事情了if外面");
}

for(var iter = datas1.iterator();iter.hasNext();){      
println("循环里面呢!");
var doc1 = iter.next();  
             if(doc1!=null){
                department=doc1.getItemValueAsString("department");
                staff_name=doc1.getItemValueAsString("staff_name");
                 staff_id=doc1.getItemValueAsString("staff_id");
                 ht_type=doc1.getItemValueAsString("ht_type");
                 Sign_date=doc1.getItemValueAsDate("Sign_date");
                 ht_name=doc1.getItemValueAsString("ht_name");
                 date_closed=doc1.getItemValueAsDate("date_closed");
                 dossier_id=doc1.getItemValueAsString("dossier_id");
                 vid=doc1.getId();
                   doc.addStringItem("department",department);        
                   doc.addStringItem("staff_name",staff_name);        
                   doc.addStringItem("staff_id",staff_id);
                   doc.addStringItem("ht_type",ht_type);
                   doc.addDateItem("Sign_date",Sign_date);
                   doc.addStringItem("ht_name",ht_name);
                   doc.addDateItem("ht_DateDue",date_closed);
                   doc.addStringItem("dossier_id",dossier_id);
                   doc.addStringItem("vid",vid);
                     process.doCreate(doc);
                   println("结束了没事情了");
       }
println("结束了没事情了if外面");
}
println("结束了没事情了最外面了");

是在保存后的按钮中执行的
purple 发表于 2012-5-14 11:23:37 | 显示全部楼层
您好,您的for循环代码是不是多贴了一段,好像是一样的吧?没明白您说的,存的不是同一条记录是什么意思,是说新建的数据,保存吗?请将您staff_id=doc1.getItemValueAsString("staff_id");取到的值,输出,然后在数据库客户端,查询对应表已经存在的数据中的该字段,是否存在您输出的这个值。谢谢。
 楼主| shijian3509 发表于 2012-5-14 11:46:53 | 显示全部楼层
首先我的fou循环没有多贴一段 ,因为上面有两个查询语句,查询到的是两种不同类型的数据,所以需要两个否循环去完成它。第二是我说错了并不是插入到了staff_id里面,而是插入到了vid里面,他的值就是这条记录的id。  第三 我说的不重复的记录是指完全不一样的两个员工,完全没有联系的两个员工。他们共同点是他们都是试用期的员工
purple 发表于 2012-5-14 13:47:42 | 显示全部楼层
您好,很抱歉,看不太明白您的意思,因为不知道您具体是什么需求。您两个查询语句,查出来两个不同类型,您觉得需要用到两个for循环,但是您的两个for循环是完全并列的,并没有根据任何条件做判断,什么情况下执行第一种方式,什么情况执行第二种方式。第二,您的vid都是去获取当前记录id,我这边不清楚您的sql具体是查询什么,所以请您在两个for循环中,将两个ID打印出来,谢谢。
 楼主| shijian3509 发表于 2012-5-14 14:02:48 | 显示全部楼层
本帖最后由 shijian3509 于 2012-5-14 14:08 编辑

哎。。。。他们两个并列没有影响,也不需要判断,因为他们操作的是两个不同的结果不同的datas。
那两条语句的意思是   1:获得 试用员工且距离试用结束还有7天的员工的信息
                               2:获取  正式员工且距离合同到期日期还有7天的员工。  
而我说的两条不同的数据 两个不同的试用期员工同一天到期  他就会报错  但我不知道为什么。  忽略第二正式员工的也可以
purple 发表于 2012-5-14 14:42:07 | 显示全部楼层
您好,我想我大概明白您的意思了,您的动作执行后脚本是查询试用、合同快到期(即您说的七天)的所有员工信息,然后将符合条件的员工信息插入到另一张表是吗?
 楼主| shijian3509 发表于 2012-5-14 14:59:22 | 显示全部楼层
对了,就是这个意思,你终于听懂了,我先去开瓶啤酒先!!
 楼主| shijian3509 发表于 2012-5-14 15:40:43 | 显示全部楼层
那我的问题怎么解决呢 您不是都明白我的意思了吗 然后呢为什么我会报这样的错误呢?

本版积分规则

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

GMT+8, 2026-8-12 07:26

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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