Function AccHelp_AutoID(prefixion As String, IDlength As Integer, tblName As String, fldName As String) As String
'功能:获得某表某字段的下一个编号,在最后一个编号上加1,需引用DAO3.6
'修改历史:2006/1/8
'说明:
'prefixion 编码前缀,如果不需要前缀,可用""代替,如AccHelp_AutoID("",5,"表名称","字段名称")
'IDlength 编码位数
'tblName 表名称
'fldName 自增序号的字段名称
'tblName 是指表的名称
'作者:竹笛 (微软最有价值专家)
'说明:您可以无偿地在您自已开发的软件中应用此函数,为了尊重作者的劳动,请保留这些说明信息。同时您不得用于盈利的商业用途,欢迎大家提出修改意见,并就此函数与作者交流
'邮箱:admin@accessoft.com
On Error GoTo Err_AccHelp_AutoID:
Dim i As Long '最后的一个编号
Dim ForMatString As String '格式化字符串
Dim rst As DAO.Recordset
ForMatString = String(IDlength, "0")
If DCount(fldName, tblName) = 0 Then '如果没有开始编号,则为1
AccHelp_AutoID = prefixion & Format(1, ForMatString)
Else
Set rst = CurrentDb.OpenRecordset(tblName, dbOpenDynaset)
rst.MoveLast
i = Val(Right(rst(fldName), IDlength)) + 1
AccHelp_AutoID = prefixion & Format(i, ForMatString)
rst.Close
Set rst = Nothing
End If
Exit_AccHelp_AutoID:
Exit Function
Err_AccHelp_AutoID:
AccHelp_AutoID = "#"
rst.Close
Set rst = Nothing
End Function
示例下载地址: http://www.accessoft.com/down/Acchelp_AutoID.rar
代码如下:
Option Compare Database
Private Sub Form_Load()
Me.ygID.SetFocus
Me.ygID = AccHelp_AutoID("Y", 2, "tblCodeyg", "ygId")
End Sub
Private Sub ToolbarFrm_ButtonClick(ByVal Button As Object)
Select Case Button
Case "保存"
Case "关闭"
DoCmd.Close
End Select
End Sub
Function AccHelp_AutoID(prefixion As String, IDlength As Integer, tblName As String, fldName As String) As String
'功能:获得某表某字段的下一个编号,在最后一个编号上加1,需引用DAO3.6
'修改历史:2006/1/8
'说明:
'prefixion 编码前缀,如果不需要前缀,可用""代替,如AccHelp_AutoID("",5,"表名称","字段名称")
'IDlength 编码位数
'tblName 表名称
'fldName 自增序号的字段名称
'tblName 是指表的名称
'作者:竹笛 (微软最有价值专家)
'说明:您可以无偿地在您自已开发的软件中应用此函数,为了尊重作者的劳动,请保留这些说明信息。同时您不得用于盈利的商业用途,欢迎大家提出修改意见,并就此函数与作者交流
'邮箱:admin@accessoft.com
On Error GoTo Err_AccHelp_AutoID:
Dim i As Long '最后的一个编号
Dim ForMatString As String '格式化字符串
Dim rst As DAO.Recordset
ForMatString = String(IDlength, "0")
If DCount(fldName, tblName) = 0 Then '如果没有开始编号,则为1
AccHelp_AutoID = prefixion & Format(1, ForMatString)
Else
Set rst = CurrentDb.OpenRecordset(tblName, dbOpenDynaset)
rst.MoveLast
i