VB自动编号的问题
VB6.0+SQL一个表单要做一个自动编号的,就是取数据库最后一条记录的编号,然后+1,但是如果两人同时使用的话,就会产生两个问题,我一直想不明白,希望大家能够解答。问题...
VB6.0+SQL
一个表单要做一个自动编号的,就是取数据库最后一条记录的编号,然后+1,但是如果两人同时使用的话,就会产生两个问题,我一直想不明白,希望大家能够解答。
问题一:表单提交之前就生成编号,这样的话,如果表单不提交这个编号会空置,多人同时使用也会,重复。
问题二:如果在提交的时候生产,多人正好在同一时间提交,会生成重复的。
我不需要代码,就是需要一个解决方案,。
代码我自己会写,谢谢!!!!
我不需要代码?我寻求的是一个好的方案,谢谢!代码我会写。 展开
一个表单要做一个自动编号的,就是取数据库最后一条记录的编号,然后+1,但是如果两人同时使用的话,就会产生两个问题,我一直想不明白,希望大家能够解答。
问题一:表单提交之前就生成编号,这样的话,如果表单不提交这个编号会空置,多人同时使用也会,重复。
问题二:如果在提交的时候生产,多人正好在同一时间提交,会生成重复的。
我不需要代码,就是需要一个解决方案,。
代码我自己会写,谢谢!!!!
我不需要代码?我寻求的是一个好的方案,谢谢!代码我会写。 展开
4个回答
展开全部
这个怎么不好做.
读出文本形式的编号,比如 358UB-07-KL0232225,......358UB-07-KL0232003
看到没我就在KL后自动+1进位,加到10自动进位.你只需要取他要增长的数字,假如上面字段叫编号
Select 358UB-07-KL + CStr(最大编号+1) as 生成的编号 from (Select Max(Int(Left(编号,7))) as 最大编号 from 表);
一句SQL语句就解决了问题,先取后面的数字格式化,再把数字+1得到的数字格式化成字符,拼接一下,就是新得到的编号.你管他几个人一起提交,数据库存数据都是进栈出栈单向操作指针的
读出文本形式的编号,比如 358UB-07-KL0232225,......358UB-07-KL0232003
看到没我就在KL后自动+1进位,加到10自动进位.你只需要取他要增长的数字,假如上面字段叫编号
Select 358UB-07-KL + CStr(最大编号+1) as 生成的编号 from (Select Max(Int(Left(编号,7))) as 最大编号 from 表);
一句SQL语句就解决了问题,先取后面的数字格式化,再把数字+1得到的数字格式化成字符,拼接一下,就是新得到的编号.你管他几个人一起提交,数据库存数据都是进栈出栈单向操作指针的
展开全部
想过form load 的时候提取表单号,然后直接写入临时数据库,但是这样的话,用户没有提交表单信息,而是取消了,这样的话,他事先占用的号,就会被空置,这样的话号码就不连续了。
这样在load的时候提取跟在他点确定提交的时候提取有什么区别吗?两个时候都有可能同时啊,不是一样的嘛?
另外数据库不能设置无重复吗(我只懂access可以设置)。如果可以的话重复会不会出错?(不过话说不刷新他又怎么知道重复,不知道是不是在刷新语句的时候出错?)
也不知道你对序号要求严格不,不介意有点误差是不是可以定时去更新数据库然后再对该字段去重?或者更加不严格的,在窗体卸载的时候再进行去重操作?
或者能不能在服务器上找个参照比如时间?精确到毫秒的,提交时按这个来编号,毫秒级应该不会同时吧?
这样在load的时候提取跟在他点确定提交的时候提取有什么区别吗?两个时候都有可能同时啊,不是一样的嘛?
另外数据库不能设置无重复吗(我只懂access可以设置)。如果可以的话重复会不会出错?(不过话说不刷新他又怎么知道重复,不知道是不是在刷新语句的时候出错?)
也不知道你对序号要求严格不,不介意有点误差是不是可以定时去更新数据库然后再对该字段去重?或者更加不严格的,在窗体卸载的时候再进行去重操作?
或者能不能在服务器上找个参照比如时间?精确到毫秒的,提交时按这个来编号,毫秒级应该不会同时吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql有自动编号字段,不过编出来的估计不合你要求,没关系,用sql的自动编号字段当索引,你自己的编号字段只是个值。
然后插入数据时先提交数据,再更新编号。
然后插入数据时先提交数据,再更新编号。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
提取表单号,我认为在每个人在做表单前进行数据刷新就可以了,就算同时提取也会有时间差的,在提取的前面,先刷新数据库,然后根据刷新的数据提取记录编号就行了,在生成表单号后就应该算是一条记录,这条记录不管是有效还是无效,利用状态来区分记录的有效性,这样需要在生成表单号后就直接存入数据库中。还有一种就是利用蓄水池的概念,生成的单号统一在一个临时表中,以临时表的单号为依据进行生成单号,做好后通过保存或提交按钮写入数据库。多人操作时候生成前刷新,提交前刷新来判断。我是这思路,希望有帮助。
追问
想过form load 的时候提取表单号,然后直接写入临时数据库,但是这样的话,用户没有提交表单信息,而是取消了,这样的话,他事先占用的号,就会被空置,这样的话号码就不连续了。
在提交的时候在刷新数据库,再提取号码,这个方案可取,但是数据量大的话,很多用户提交的时候都在刷新数据库,这样程序会不会死呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询