谢谢缪伟老师!也谢谢麦田老师!
缪伟老师的代码已经能解决了,不过作了小的修改。
Sub zdbh() '自动编号子过程
' MaxID = DMax("[ygID]", "tblCodeyg")
' Me.ygId = "Y" & Format(Val(Right$(MaxID, 2) + 1), "0000") '这个编号不适合加时间日期
MaxID = Nz(DMax("[ygID]", "tblCodeyg"), "")
If Len(MaxID) = 0 Then
Me.ygId = "Y01"'此处应加双引号
Else
Me.ygId = "Y" & Format(Val(Right$(MaxID, 2) + 1), "00")
End If
End Sub
下面是整个窗体的代码(已加入了缪伟老师修改后的代码):在这个窗体中学习了子过程的调用、控件焦点的控制
Private Sub 保存() '保存子过程
'**********定义变量
Dim rst As Object
Dim strSQL As String
' Dim MaxID As String
' Dim currentID As String
Dim strFrm As String
'********判断必填项
If IsNull(Me.ygxm) Then
MsgBox "请输入员工姓名!", vbCritical, "提示"
Me.ygxm.SetFocus
Exit Sub
End If
'**********自动编号
Call zdbh '运行自动编号子过程
'************新增数据
strSQL = "select * from tblCodeyg"
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)'打开记录集
rst.AddNew'新增一行数据
' rst!ygId = currentID
rst!ygId = Me.ygId
rst!ygxm = Me.ygxm
rst.Update
rst.Close
Set rst = Nothing
'*************清空文本框,以便新增下一条记录
Me.ygxm = Null
'*********刷新子窗体
strFrm = Form_frmYg_sg_Main!frmChild.SourceObject
Form_frmYg_sg_Main!frmChild.SourceObject = strFrm
'********提示成功
MsgBox "数据保存已成功!", vbInformation, "消息"
End Sub
Private Sub cmdCancel_Click() '取消按钮的单击事件
DoCmd.Close acForm, Me.Name '关闭窗体
End Sub
Sub zdbh() '自动编号子过程
' MaxID = DMax("[ygID]", "tblCodeyg")
' Me.ygId = "Y" & Format(Val(Right$(MaxID, 2) + 1), "00") '这个编号不适合空表
MaxID = Nz(DMax("[ygID]", "tblCodeyg"), "")
If Len(MaxID) = 0 Then
Me.ygId = "Y01"
Else
Me.ygId = "Y" & Format(Val(Right$(MaxID, 2) + 1), "00")
End If
End Sub
Private Sub cmdSave_Click() '保存按钮的单击事件
Call 保存 '运行【保存】子过程
Call zdbh '自动编号
Me.ygxm.SetFocus '让员工姓名获得焦点
End Sub
Private Sub Form_Load() '窗体加载事件
Call zdbh '自动编号
Me.ygxm.SetFocus '让员工姓名获得焦点
End Sub