[QUOTE]先检测当日有无订单,如果无,则生成第一个编号;如果有,则在最大一个编号上加1生成一个新的编号。
第一个编号可以这样生成:
LcOrderNo=SUBS(AllTRIM(STR(YEAR(DATE()),3,2))+ALLTRIM(STR(MONTH(DATE()))+ALLTRIM(STR(DAY(DEATE()))+'1'
至于第二个、第三个……希望您能发挥您的潜力,也相信您能搞定(条条大路通罗马,方法肯定不止一种)。
建议,年份最好用四位,不然,如果您的寿命够长的话,又会遇到千年虫的问题了。
[/QUOTE]
3楼思路是对的,但存在一个问题,如果月份和日期小于10时,如2007-05-08,月份转换得到的是“5”,而不是“05”,日转换出的值是“8”,而不是“08”,这样不利于全年订单排序或索引,如果先用DTOC()函数把日期转换为字符类型再截取,就能避免这个问题。如:
LcOrderNo=ALLTRIM(substr(dtoc(DATE()),9,2))+ALLTRIM(substr(dtoc(DATE()),1,2))+ALLTRIM(substr(dtoc(DATE()),4,2))+‘0001’
另外上面LcOrderNo=SUBS(AllTRIM(STR(YEAR(DATE()),3,2))+ALLTRIM(STR(MONTH(DATE()))+ALLTRIM(STR(DAY(DEATE()))+'1'语句有错误,括号不匹配;最后一个日期函数写成了DEATE()。