| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1074 人关注过本帖
标题:我想做一个流水号码,要在记录中检测流水号最后三位最大的值??帮忙看一下 ...
只看楼主 加入收藏
yiyaozjk
Rank: 2
等 级:论坛游民
帖 子:231
专家分:30
注 册:2010-3-10
结帖率:51.67%
收藏
已结贴  问题点数:20 回复次数:7 
我想做一个流水号码,要在记录中检测流水号最后三位最大的值??帮忙看一下错哪里??
     我想做一个流水号编码原则是:“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条左右。
                  
 
搜索更多相关主题的帖子: 流水号 号码 检测 记录 
2010-06-19 15:55
icecool
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:20
帖 子:1216
专家分:1376
注 册:2005-3-14
收藏
得分:15 
因为你的记录指针没有移动,那么你的循环结束条件RS.EOF不会达到,也就不会跳出.超时

不知你那个RS.MOVEFIRST的意义是什么?为什么要指向第一条?

http://toorup.3v.do
loading...
2010-06-19 19:30
yiyaozjk
Rank: 2
等 级:论坛游民
帖 子:231
专家分:30
注 册:2010-3-10
收藏
得分:0 
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
2010-06-21 09:38
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:5 
以下是引用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和进仓单号相等的情况,可是你后面并没有进行其他数据库处理操作啊,至少从字面上看没有!

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-06-21 10:08
yiyaozjk
Rank: 2
等 级:论坛游民
帖 子:231
专家分:30
注 册:2010-3-10
收藏
得分:0 
这家伙搞什么的,看不懂,

管理员应该将这种人屏蔽掉,不准乱发贴..
2010-06-22 16:46
hams
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:18
帖 子:912
专家分:3670
注 册:2008-7-30
收藏
得分:0 
何必搞得这么复杂,把流水号做个排序不是得了,排完序了,序号加1。

俺不高手,俺也是来学习的。
俺的意见不一定就对,当你不认同时请点忽视按钮。
当走到十字路口不知该如何走时,可在论坛问下路,但你若希望别人能一路把你送到目的地,显然是不现实的,因为别人也有自己要走的路。
2010-06-22 18:18
icecool
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:20
帖 子:1216
专家分:1376
注 册:2005-3-14
收藏
得分:0 
生成流水号,我觉得不应从数据库中读取最后一个号码,
如果是两个人同时在线操作,那么就会保存成一个号码两张单的情况,当然你果不允许重复的话就是出错了.
将做成的新单号保存在一个文本文件里,每次有新单的时候,就从该文本文件中读取作为前一个单号,
生成新单号时更新文本文件中的单号,同时保存到数据库.

http://toorup.3v.do
loading...
2010-06-22 18:35
pnovus
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-06-22 19:13
快速回复:我想做一个流水号码,要在记录中检测流水号最后三位最大的值??帮忙看 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046351 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved