在多用户使用的程序过程当中,怎么控制每个用户新增一条记录的时候,程序自动产生的编号都是唯一的,不能相同。
比如用户A新增程序产生编号0509001
这个时候用户B也新增,则产生的编号是0509002,绝对不能出现重复。
我之前的编号产生是抓记录集最后一条记录的编号,加1

解决方案 »

  1.   

    I = Val(Right(x_Rs.Fields("Make_ID1"), 4)) + 1
    GetXtPH = Format(Text1(3).Text, "YYYYMM") & Mid("0000", 1, 4 - Len(I)) & I這樣可以嗎?
      

  2.   

    遮位兄弟的提議可以。現在我的問題不是不知道怎麼去自動編號,而是不知道怎麼控制,如果兩個以上用戶同時操作新增,怎麼控制他們每個人產生的編號是唯一的。
    比如同時間,A新增取得的編號是0509001,這個時候B新增取得的編號就不能再是0509001,而是0509002,輪到C就是0509003,以此類推下去。
      

  3.   

    数据库记录不是有个IDENTITY自动增量的字段类型吗?
      

  4.   

    唉,還是我說得不夠明瞭。
    因為編號要求顯示在文本控件上,比如用戶A取得的編號是GQN0509001的,另外的其他用戶就不能取得GQN0509001這個編號,要求取其他編號。
      

  5.   

    哦,忘记补充一点了。
    我的编号是这样的,
    GQN0509001
    GQN0509002
    GQN0509003
    GQN0509004
    ..........
    GQN0509999
    GQN0510001
    GQN0510002
    GQN0510003
    ..........
    字母+年份05+月份09+三位有序数字001
    在数据库里面,应该不可以自动产生这样的编号。
    所以,在程序中,通过抓取记录最后一条加1得到最新的编号,但是这样的话,如果两个用户一起使用,就很难保证他们抓取的编号都是新的,而且不同的。我的问题就这样。
      

  6.   

    建一个新表,只有一个字段,NewID,且只有一条记录。新增用户之前,必须读写该记录。由于是同一记录,可以被锁定。当一客户端更新该记录失败,表明有其他客户锁定,适当延时后重新读写。
      

  7.   

    看來也只有用top兄弟說的方法來實現這樣的功能了,只是這樣做每次新增的時候都得去記取數據庫,而且還得用代碼來控制...不可求全啊!
      

  8.   

    我的做法和of123() 有点类似我是建一个表用来存放最大的ID(max_id),当需要就是读取max_id,加上1,并把max_id改写成加1后的值,这样第二个用户所读取的max_id值就不会重覆
      

  9.   

    lolo~~
    我做过这个~
    每个用户获得的ID绝对唯一,但是这样有个问题,用户中途取消后麻烦就来了~