日期:2014-05-18  浏览次数:20636 次

生成编号规则问题! 急。。谢谢
单号规则为“YSWT-ZX-001”开始,最后三位为流水号
作为一个表的PK

------解决方案--------------------
insert into tableX(pk, f1, f2) values( 'YSWT-ZX- '||pk_sequence.nextval, f1value, f2value)?
------解决方案--------------------
很简单啊 设2个字段一个字段存储固定的YSWT-ZX- 另外一个存储流水号 在流水号字段上+一个序列器让它自加。然后用这2个字段联合作主键
------解决方案--------------------
zqrqq(zqrain(结帖是一种美德)) 用的是Oracle的序列来增长滴~~MS应该可以.
要不就是先截字符串,取MAX,+1 ?
------解决方案--------------------
给你一个简单的DEMO:

public static String getNum()
{
DetachedCriteria decriteria = DetachedCriteria.forClass(Book.class);
decriteria.addOrder(Order.desc( "booknum "));
List list = CurrencyDao.query(decriteria,0,1);
************************************************************************************
上面的代码不用管他,是连接数据库BOOK表并取出第一条记录.
************************************************************************************
String s = ((Book)list.get(0)).getBooknum();//取出编号
String es = s.substring(8);//从这个编号的第8位开始,因为前7位是:YSWT-ZX-
int iNum = Integer.parseInt(es)+1;
if(iNum <10){
es = "00 "+iNum;
}else{
if(iNum <100){
es = "0 " + iNum;
}else{
es = Integer.toString(iNum);
}
}
}
String string = "YSWT-ZX- "+es;
return string;
}

************************************************************************************
第一条记录是你固定的YSWT-ZX-001,因此你要加个判断取出编码是不是空,如果空就加YSWT-ZX-001,否则用以上代码,给你注释了,你自己在看一下!