日期:2014-05-16  浏览次数:20458 次

js脚本中编号的自动增加
要求, 从“00001” 开始增加, 每新增一个表单, 数值+1 , 即“00002”。。“00003”。。。。。。前面的0000是字符型的; 
我写一部分代码, 但不能实现, 哪位高手帮我做一下, 感激不尽!
importClass(Packages.cn.com.chx.bo.AppBo);
importClass(java.lang.Integer);
importClass(Packages.cn.com.chx.util.DateTimeUtil);
//获取当前时间
var date=new Date( );
var df=new java.text.SimpleDateFormat("yyyy");
var df2=df.format(date);
查询数据库 里上一个数据
var sql = "select * from GW_GWGL order by ID desc";
var bo = new AppBo();
var list = bo.query(sql);

定义变量年份为“”;
var year = "";


数据库中list 有值得时候执行。
if(list.size() > 0 && list != null && list != "null" && list != ""){
  //取到数据库中时间(swsj)
  year = list.get(0).get("SWSJ");
  //取到数据库中编号(bh)
  var bh1 = list.get(0).get("BH");
  //将字符串类型的bh 转换成 数值类型
  var bh = (parseInt(bh1)); 
//当前年份与数据库中年份比对。

if(!year.substring(0,3).equals(df2)){
  
  编号数值小于10时,则拼接字符“0000” 。依次。。。这是我写的,出现错误, 当增加到00008时 在增加则从00001开始了。反复循环。
 if(bh<=10){
  var b = (parseInt(bh))+1;
  bh="0000"+b;  
 }else if(bh>10 && bh<100){
  var b = (parseInt(bh))+1;
  bh="000"+b;
 }else if(bh>=100 && bh<1000){
  var b = parseInt(bh)+1;
bh="00"+b;
 }else if(bh>=1000 && bh<10000){
  var b = parseInt(bh)+1;
bh="0"+b;
}
将编号赋给“bh”
objTable.put("bh",bh);

}
} else {
objTable.put("bh","00001");
}


哪里看不懂问我!


在下qq 894373014

------解决方案--------------------
parseInt(bh, 10); 加个参数10,用十进制转换
------解决方案--------------------
根本没必要这么判断,一大堆
 if(bh<=10){
var b = (parseInt(bh))+1;
bh="0000"+b;
 }else if(bh>10 && bh<100){
var b = (parseInt(bh))+1;
bh="000"+b;
 }else if(bh>=100 && bh<1000){
var b = parseInt(bh)+1;
bh="00"+b;
 }else if(bh>=1000 && bh<10000){
var b = parseInt(bh)+1;
bh="0"+b;
}

一律直接加上0000,然后从右面取5位就可以了。
------解决方案--------------------
况且你这是JSP,和JS完全两回事。
------解决方案--------------------
你这个编号在数据库是自动增加的的吧,
var sql = "select * from GW_GWGL order by ID desc";
这句改成按编号升序

然后list里面就可以这里写了
bh ="0000"
if(!year.substring(0,3).equals(df2)){
var bha +=1;
bh+=bha;
}

------解决方案--------------------
探讨
一律直接加上0000,然后从右面取5位就可以了。

------解决方案--------------------
parseInt("0008") ,parseInt("0009") 是有问题的
会当作8 进制计算,必须用指定进制,parseInt("0008",10)