自动生成编号的有关问题

自动生成编号的问题在窗体中有一个按钮和一个文本框,点击按钮时,在文本框中自动生成消费单据编号,这个单据

自动生成编号的问题
在窗体中有一个按钮和一个文本框,点击按钮时,在文本框中自动生成消费单据编号,这个单据编号是由每次判断consume表中的最后一条记录的后四个字符是否重复,而生成的,可是程序运行没有错误,就是不自动执行+1。我已经试过了,它执行的就是else后面的那句。请大家帮我看看!
Private   Sub   Command1_Click()

Dim   djbh   As   Long
Dim   StrCnn   As   New   ADODB.Connection
Set   StrCnn   =   New   ADODB.Connection
          StrCnn.Open   "Provider=SQLOLEDB.1;Integrated   Security=SSPI;Persist   Security   Info=False;Initial   Catalog=card;Data   Source=WYH "
Dim   rs1   As   New   ADODB.Recordset
rs1.CursorLocation   =   adUseClient
rs1.Open   "select   *   from   consume   order   by   listno1 ",   StrCnn,   adOpenDynamic,   adLockOptimistic

If   rs1.RecordCount   >   0   Then
            If   rs1.EOF   =   False   then
              rs1.MoveLast
              djbh   =   Val(Right(rs1.Fields( "listno1 "),   4))+1                           ——〉就是这里不执行
             
              Text1.Text   =   "XF "   &   Format(Date,   "yyyymmdd ")   &   "- "   &   Format(djbh,   "0000 ")

            End   If
Else
          Text1.Text   =   "XF "   &   Format(Date,   "yyyymmdd ")   &   "-0001 "

rs1.Close

End   If
End   Sub

[解决办法]
'这样试试:
rs1.Open "select max(listno1) as listno1 from consume ", StrCnn, adOpenDynamic, adLockOptimistic

If rs1.RecordCount > 0 Then
if not isnull(rs1.fields( "listno1 ")) then
djbh = clng(rs1.fields( "listno1 "))+1
Text1.Text = "XF " & Format(Date, "yyyymmdd ") & "- " & Format(djbh, "0000 ")
End If
Else
Text1.Text = "XF " & Format(Date, "yyyymmdd ") & "-0001 "

end if
rs1.Close

[解决办法]
我觉得你这样的情况最好用一张表来保存编号信息。比如这张二个字段,日期和编号,一行数据,存取当日日期和最大编号。每次程序启动时这样处理一下:
cn.execute "update 编号表 set 日期= ' "& date & " ',编号=0 where 日期 < ' "& date & " ' "

插入数据的时候,同时更新这个表的最大值,放在一个事务中处理,这样处理效率应该好

[解决办法]
'以下代码在Access2000+VB6调试通过,数据库test.mdb中表tb字段-bh

Private Sub Command1_Click()

Dim db As ADODB.Connection
Dim rs As ADODB.Recordset
Dim tempBh As String, tempYear As String, bhNum As String

Set db = New ADODB.Connection
db.CursorLocation = adUseClient
db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source= " + App.Path + "\test.mdb "
db.Open "Data Source= " + App.Path + "\test.mdb; "

Set rs = New ADODB.Recordset

rs.Open "tb order by bh ", db, adOpenKeyset, adLockOptimistic

If rs.RecordCount = 0 Then '第一次建立编号



bhNum = "XF " & Format(Date, "YYYYMMDD ") & "-0001 "

Else

tempdate = Format(Date, "yyyymmdd ")

'MsgBox tempdate

If rs.State = adStateOpen Then rs.Close

rs.Open "select * from tb where bh like 'XF '+ ' " & tempdate & " '+ '% ' order by bh ", db, adOpenDynamic, adLockOptimistic

'MsgBox rs.RecordCount

If rs.RecordCount > 0 Then '当天有记录时

If rs.State = adStateOpen Then rs.Close

rs.Open "tb order by bh ", db, adOpenDynamic, adLockOptimistic

rs.MoveLast

tempYear = Left(rs!bh, 11) '左边11位

tempBh = Right(rs!bh, 4) + 1 '右边4位

If Len(tempBh) = 1 Then
tempBh = "000 " & tempBh
End If

If Len(tempBh) = 2 Then
tempBh = "00 " & tempBh
End If

If Len(tempBh) = 3 Then
tempBh = "0 " & tempBh
End If

MsgBox tempBh

bhNum = tempYear & tempBh

Else

bhNum = "XF " & Format(Date, "YYYYMMDD ") & "-0001 " '当天初始临时编号

End If

End If

rs.AddNew
rs!bh = bhNum
rs.Update

rs.Close
Set db = Nothing

End Sub