自动编号模块-月皓星隐
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


自动编号模块

发表时间:2015/9/9 17:18:09 评论(2) 浏览(11035)  评论 | 加入收藏 | 复制
   
摘 要:自动编号管理的窗体及函数,方便统一管理全局的编码规则
正 文:

根据UMV 软件的灵感和样式做了自动编号管理,因为在UMV软件中只是给了个函数,所以特此还原了部分自动编号的功能作为可移植的窗体和函数方便使用。此类管理的好处是可以把众多的表的编号规则统一管理。所有自动编号通过在编号规则窗体填好编号的规则后,调用自动编号函数进行自动编号处理,非常方便。






'***********************************************************
'程序功能:本程序是用来配合自动编号管理的窗体完成自动编号
'
'程序名称:自动编号
'
'程序参数:输入编号规则名称
'
'使用范围:适合所有access
'
'使用范例:直接在程序中调用即可  rs!序号=自动编号(表名_序号[规则名称])
'
'程序作者:月皓星隐
'
'编外的话:为了方便查看,所以变量用中文的
'
'编写时间:2015-09-01
'************************************************************


Function 自动编号(ByVal 规则名称 As String)
  
Dim rs As New ADODB.Recordset
Dim cn As ADODB.Connection
 
Dim 循环次数 As Integer
Dim 日期前缀 As String
Dim 流水号 As Long
Dim 流水号后缀 As String
 
'1.先根据规则名称找到记录
Set cn = CurrentProject.Connection
rs.Open "自动编号管理", cn, adOpenKeyset, adLockOptimistic
rs.Filter = "[规则名称]='" & 规则名称 & "'"
 
'2.根据情况进行编号
If rs.EOF or rs.BOF Then MsgBox "没有有效的规则,请确定是否规则名称输入正确": Exit Function

     If IsNull(rs!最后编号) Then
        流水号 = 1
    Else
        流水号 = Val(Right(rs!最后编号, rs!顺序号位数)) + 1
    End If
 
For 循环次数 = 1 To rs!顺序号位数
 流水号后缀 = 流水号后缀 & "0"
Next 循环次数
 
'2.1有日期形式加入的情况
If IsNull(rs!日期格式) = False Then
    日期前缀 = Format(Now(), rs!日期格式)
    自动编号 = rs!编号前缀 & 日期前缀 & Format(流水号, 流水号后缀)
    rs!最后编号 = 自动编号
    rs.Update
Else
'2.2没有日期加入编号的情况
     自动编号 = rs!编号前缀 & Format(流水号, 流水号后缀)
     rs!最后编号 = 自动编号
     rs.Update
    
End If
Set rs = Nothing
Set cn = Nothing
 
End Function


 

点击图片查看大图


比如我输入了一个规则 规则名为:’表1_ID‘ ,编号头为’NNN‘,流水号为4位数,当我增加数据时,自动编号根据规则就编写了NNN0001的编号。其他详细的代码见附件,不多赘述了


附   件:

点击下载此附件


Access软件网交流QQ群(群号:198465573)
 
 相关文章
自定义自动编号,支持断号重号检测补号功能  【andymark  2008/4/2】
再谈自动编号函数AutoNum()可以检测断号...使断号重续.....  【chenlugen  2008/8/31】
【access小品】断号列表函数  【煮江品茶  2011/4/23】
[access查询]【access技巧】最小断号查找的最高效方法(...  【红尘如烟  2012/5/22】
断号重续之我见  【LiShiping  2012/8/18】
【Access示例】多类别自动编号示例  【易勋  2014/10/22】
常见问答
技术分类
相关资源
文章搜索
关于作者

月皓星隐

文章分类

文章存档

友情链接