当前位置:编程学习 > asp >>

用asp做快递系统,如何实现自动编号

快递里面会出现的物品编号问题,
如何做到自动编号,并随快递信息一起存储,
例如,今天是2008年12月20日,录入的这个项目是今天第一单,
想要把货号表述成200812200001这种形式,
应该怎么做,
另外,如遇到删除这单,则200812200001不存在,
录下一单的时候如何保证不段号,就是20081220001....0002....0003无论删除还是怎么样,都不能断号.
答案:
asp不太懂,但是可以给你说一下我的思路

单号主要由两部分构成: 时间段 ,数字段

我英语不好, 假设单号的英语是 dianhao, maxNumberpart的意思是单号中的自增长的那部分 比如0001-9999

于是就有了方法

String next(){
String dateString = getDateString();
int maxNumberpart = getMaxNumPart();
String stringNumberPart = formatLenIfNeed(maxNumberpart+1);
return dateString + stringNumberPart;
}

//这个方法是吧 数字换成需要显示位数的字串
//比如 1 就转成 0001, 26就转成 0026
formatLenIfNeed(int int4format, int needLen){
int realLength = Integer.toString(int4format).length();
if(realLength > needLength)
return Integer.toString(int4format);
StringBuilder ret = new StringBuilder(30);
for(int i = 0; i < needLength - realLength; i++)
ret.append('0');

ret.append(int4format);
return ret.toString();
}

//这个方法就是得到20081220这样的和日期相关的字串
//vb 我不知道改怎么弄
String getDateString(){

}

//这个方法是求出数字段的最大值, 方法是想办法去拼这样一个SQL
//单号那个字段的名称是 dianhao, 类型是 64位的int bigint(这样简单)
int getMaxNumPart(String dateString){
//是这样的一个sql
String sql =
"select max(dianhao) from 表"
+"where "
+"diannao like (" + dateString + " + '%')
+"and len(dianhao) = " + (dateString.length() + 4)

}
你在每次生成这个ID前需要先获得一个最大的ID号,SELECT MAX(ID)。
然后判断这个前6位的日期是否为当日,不为当日,前6位加1天。可以用dateadd,需要先格式化成日期格式如“2008/12/11”。后四位0001。
如果前6位为当日,则后4位加1。
之后把这个转成你的ID,可以用字符,也可以用LONG型,看你需要了,LONG型的话,可以到2147年,也够用。ASP因为只有Variant,数值型的Variant和Double范围一样。
你也可以设置采番表,不过采番对于年、年月来说比较好,你用年月日的话数据量大了点,不是很推荐,直接MAX(ID)再计算方便点。
答案补充
前面写错了,不是前6位,应该是前8位,呵呵。这个ID用字符型的吧。你可以做个函数来获得这个ID,里面需要判断的就是我上面提的这2种情况。以及日期转换、判断。
需要用到数据库的知识了,如果你不知道的话,最好是谨慎使用吧.SQL数据库就可以实现自动排序等要求,但是比较麻烦了.
这个不困难啊直接把 前面的2008年12月20日  + 这一单的数据ID就可以了。。。

不会我帮你做 收费的哟。。www.wh27.net
编程]

上一个:JSP与ASP相比哪个应用更广点
下一个:谁有中英文域名查询的asp代码啊?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,