Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

自动编号模块

时 间:2015-09-09 17:18:09
作 者:月皓星隐   ID:39720  城市:自贡
摘 要:自动编号管理的窗体及函数,方便统一管理全局的编码规则
正 文:

根据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群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助