当前位置:编程学习 > VB >>

下面的自动编号代码从“1”增加到“10”就不能再增加编号了,怎么修改?

下面的自动编号代码从“1”增加到“10”就不能再增加编号了,怎么修改才能使它一直递增号码,注意编号前面不要“0”



Public Function ZDYBH(StrTable As String, StrField As String, StrBH As String, Optional FDay As String = "YYMMDD", Optional ILen As Integer = 1, Optional B As Boolean = False) As String

'==================================================================

'功能: 自定义用户编号,带断号检测功能
'格式: "XXX"-"日期格式 "-"0000"
'      StrTable 为任意表名称
'      StrField 为任意字段名称
'      StrBH    编码类型 , 可自义任意格式
'      FDay     日期格式 默认日期格式为:YYMMDD",其他符合FORMAT格式的如 YYYYMM,YYYY,YYYYMMDD
'      ILen     为数字格式化长度 , 默认长度为3 代表 000 格式
'      B        为是否要检测断号 ,默认为FALSE 不检测
'用法:  ZDYBH("产量表", "产量ID", "LDH")
'       ZDYBH("产量表", "产量ID", Me.Combo1)
'       ZDYBH("产量表", "产量ID", Me.Combo1, "YYYY")
'       ZDYBH("产量表", "产量ID", Me.Combo1, , 4, True)
'===============================================================

Dim Rs As New ADODB.Recordset
Dim Conn As New ADODB.Connection
Dim Str As String
Dim Num As Integer
Dim TNum As Integer
Dim StrWhere As String
Dim StrOrderWhere As String
Dim StrOrderWhereDesc As String

Set Conn = CurrentProject.Connection
Str = StrBH & "-" & Format(Now(), "" & FDay & "") & "-"
StrWhere = "select " & StrField & " from " & StrTable & " where " & StrField & " like  '" & Str & "%'"
StrOrderWhere = StrWhere & " Order by  " & StrField & ""
StrOrderWhereDesc = StrWhere & " Order by  " & StrField & " DESC"

Rs.Open StrOrderWhereDesc, Conn, adOpenKeyset, adLockOptimistic

  If Rs.EOF Then
   
      Num = 0

    Else
    
      Num = Right(Rs.Fields("" & StrField & ""), ILen)
   
      If B = True Then
      
         If CInt(Num) <> Rs.Fields.Count Then
         
            Rs.Close
            Rs.Open StrOrderWhere, Conn, adOpenKeyset, adLockOptimistic
         
            Num = 0
         
            Do While Not Rs.EOF
           
               TNum = CInt(Right(Rs.Fields("" & StrField & ""), ILen))
               
               If TNum = Num Then
                   
                   MsgBox StrBH & "-" & Format(Now(), "" & FDay & "") & "-" & Format(Num, String(ILen, "0")) & "存在重号,请检查数据的"
                   Exit Function
                 Else
                 
                   If TNum - Num = 1 Then
                 
                      Num = TNum
                     Else
               
                      Exit Do
                
                   End If
                
                End If
              
              Rs.MoveNext
           
            Loop
        
        
         End If
     
      End If
    
  End If

 ZDYBH = StrBH & "-" & Format(Now(), "" & FDay & "") & "-" & Format(Num + 1, String(ILen, "0"))

Set Rs = Nothing
Set Conn = Nothing

End Function
--------------------编程问答-------------------- 提示什么,要达到什么目的,将变量中的内容显示出来看看 --------------------编程问答-------------------- 编到10号后,又从2号开始了,提示编号重复 --------------------编程问答-------------------- Optional ILen As Integer = 1

你预期的记录是几位数? --------------------编程问答-------------------- --------------------编程问答-------------------- 预期的记录2位后,增加到100就不能增加了;预期的记录3位后,增加到1000就不能增加了.我不想要前面的虚位0;让它从1开始,增加到无数位,怎么改,请高手帮忙改改. --------------------编程问答-------------------- 对于你这个字符型的编码字段,前导 0 是必要的,否则你将无法实现预期的排序。

例如,对于字符,'10' < '9'。因为它比较的是字符 1 (&H30) 和 9 (&H39)。甚至 '1000000' < '9'。


--------------------编程问答-------------------- 不要前导0的功能如何实现?
补充:VB ,  VBA
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,