注册 登录
编程论坛 ASP技术论坛

我想做一个流水号码,要在记录中检测流水号最后三位最大的值??帮忙看一下错哪里??

yiyaozjk 发布于 2010-06-19 15:55, 1074 次点击
     我想做一个流水号编码原则是:“JC”+时间+3位尾数
    想法是让一个新增的流水号,在整个表中循环,如果有的话,就让尾数加1。
代码如下:
             sql="select * from 结存 where 进仓单号='"&riqi&"'"  
             set rs=conn.execute(sql)
              rs.movefirst         '让指针指向第一条记录     
               '将第一条记录的进仓单号字段先赋给riqi,作为比较的初始值
             DO WHILE  NOT rs.EOF
                  if rs("进仓单号") =riqi then     '如果这个新进仓单号如果存在的话
                   yy=right(rs("进仓单号"),3)+1    '
                   ll=left(rs("进仓单号"),10)
                   riqi=ll&Right("00"&yy,3)      '这里就是让后面的数字用0来补足三位,
                                                 就让其尾数继续增加,再让其循环继续比较
                   end if
              loop
                 rs.movelast                 
但是这段代码运行起来,服务器会提示超时,是不是有死循环??
   我理解不通,应该没有的呀?但为什么超时,我的记录数只有250条左右。
                  
 
7 回复
#2
icecool2010-06-19 19:30
因为你的记录指针没有移动,那么你的循环结束条件RS.EOF不会达到,也就不会跳出.超时

不知你那个RS.MOVEFIRST的意义是什么?为什么要指向第一条?
#3
yiyaozjk2010-06-21 09:38
rs.movefirst的作用是我想让它第一条记录开始查找。我也发现了这个问题,后面我加了一条rs.movenext,
但我发现好象,没有记录被查找到。。。。(riqi等于20100620003,而明明我有两条记录为20100620003)
              rs.movefirst
                 do while not rs.eof
                    if left(rs("进仓单号"),13) =riqi then
                      yy=right(riqi,3)+1
                      ll=left(riqi,10)
                      riqi=ll&Right("00"&yy,3)      '这里就是让后面的数字用0来补足三位
                    end if
                        rs.movenext
                 LOOP
                 rs.movelast
#4
gupiao1752010-06-21 10:08
以下是引用yiyaozjk在2010-6-21 09:38:34的发言:

rs.movefirst的作用是我想让它第一条记录开始查找。我也发现了这个问题,后面我加了一条rs.movenext,
但我发现好象,没有记录被查找到。。。。(riqi等于20100620003,而明明我有两条记录为20100620003)
              rs.movefirst
                 do while not rs.eof
                    if left(rs("进仓单号"),13) =riqi then
                      yy=right(riqi,3)+1
                      ll=left(riqi,10)
                      riqi=ll&Right("00"&yy,3)      '这里就是让后面的数字用0来补足三位
                    end if
                        rs.movenext
                 LOOP
                 rs.movelast
即使发现了变量riqi和进仓单号相等的情况,可是你后面并没有进行其他数据库处理操作啊,至少从字面上看没有!
#5
yiyaozjk2010-06-22 16:46
这家伙搞什么的,看不懂,

管理员应该将这种人屏蔽掉,不准乱发贴..
#6
hams2010-06-22 18:18
何必搞得这么复杂,把流水号做个排序不是得了,排完序了,序号加1。
#7
icecool2010-06-22 18:35
生成流水号,我觉得不应从数据库中读取最后一个号码,
如果是两个人同时在线操作,那么就会保存成一个号码两张单的情况,当然你果不允许重复的话就是出错了.
将做成的新单号保存在一个文本文件里,每次有新单的时候,就从该文本文件中读取作为前一个单号,
生成新单号时更新文本文件中的单号,同时保存到数据库.
#8
2010-06-22 19:13
哎,为什么不用Access 自动生成流水号呢?
绝对安全。。。

ps.我是新手如果这个是一个白痴的建议的话,请包含
1