本人正在用VB(access)开发一个仓库管理系统,不知怎样产生随机的入库单编号(每输入一单产生的随机编号都是有顺递增的)
例如:
第一单的编号为:CHDP00000081
第二单的编号为:CHDP00000082
以后每输入的入库单自动获得递增的编号.请各位高手们指点一下,小弟先谢谢了.

解决方案 »

  1.   

    请问楼主:
    第一单的编号为:CHDP00000081
    第二单的编号为:CHDP00000082这是随机吗????
    如果只想产生这样的东东,可以调用这个函数Private Function GetInputCode(ByVal vOldCode As Long) As String
        '要么得到以前的编号,要么定义一个Static 变量
        Static i
        If vOldCode <> 0 Then i = vOldCode      '指定以前的编号
        i = i + 1
        GetInputCode = "CHDP" & Format(i, "00000000")
    End Function
      

  2.   

    Static i 
    改为
    Static i&
      

  3.   

    楼上的朋友不好意思.
    CHDP是预先设定好的前缀,00000081才是要随机产生的
      

  4.   

    "DD" & year(now) & day(now) &month(new) & 随机数
      

  5.   

    你可以把那个编号列去掉,自己添加一个列(入库单编号),每次插入一条记录前,先生成编号strSNum="CHDP" & cstr(int(rnd()*b-a+1)),[int(rnd()*b-a+1)是生成a~b范围的随机整数],检索表单中的编号,如果存在与strSNum相同的编号,则strSNum需要重新生成.
    const a as long=0
    const b as long=99999999
    dim strSNum as string
    dim conn as new adodb.connection,rs as new adodb.recordset
    ......
    conn.open .....
    do 
    vba.randomize now()
    strSNum="CHDP" & cstr(int(rnd()*b-a+1))
    set rs=conn.execute("select SNum from yourTable where SNum='"&strSNum&"'")
    loop while not rs.eof
    .....insert into ......
      

  6.   

    既然要随机,那么递增的要求似乎有点矛盾吧?我给你的函数就是递增的,而且CHDP也是预先设定好的前缀,00000081是按照递增的循序生成的。
      

  7.   

    写错了 strSNum="CHDP" & cstr(int(rnd()*b-a+1))改为
    strSNum="CHDP" & format(cstr(int(rnd()*b-a+1)),"00000000")
      

  8.   

    "faysky2"这位朋友的方法不错,但好像不能保证是有顺递增的,只能随机得到一个数吧.
    "Winters_lee"这位朋友讲的思路也很好,但你如何获得你上一单的vOldCode呢?
      

  9.   

    vOldCode要么用表保存,每产生一次也要更一次。要么直接从表里取,但这样好像不太好吧