【发布时间】:2020-07-13 18:53:49
【问题描述】:
我正在尝试在保存表单时(插入前)将新员工插入具有自定义 ID 字段的表中。要创建自定义 ID,我使用姓氏的前 4 个字母和名字的前 2 个数字,后跟由匹配的员工姓名数量生成的 2 位数字:
即
John Smith = SMITJO01 (first entry)
John Smith = SMITJO02 (second John Smith)
但是,我不知道如何根据列表中有多少其他匹配名称将唯一索引 (01, 02) 添加到函数中:
Function GetNextEmployeeId(ByVal lastName As String, ByVal firstName As String) As String
Dim strNameComp As String
Dim nSEQ As Long
strNameComp = Left(lastName, 4) & Left(firstName, 2)
End Function
编辑: 由于 EMPLOYEE_ID 是主键,因此当我尝试在 BeforeUpdate 和 BeforeInsert 表单事件中保存新条目时,它不断给我 Null 错误。
使用我的最终解决方案进行更新时,我不得不进行修改,因为它对格式化为数字非常挑剔。感谢两位的帮助!
Function GetNextEmployeeId(ByVal lastName As String, ByVal firstName As String) As String
Dim strNameComp As String
'Dim varMax As Var
Dim nSEQ As Long
strNameComp = UCase(Left(lastName, 4)) & UCase(Left(firstName, 2))
varMax = DMax("EMPLOYEE_ID", "EMPLOYEES", "EMPLOYEE_ID LIKE '" & strNameComp & "*'")
If IsNull(varMax) Then
' no one there yet
nSEQ = 1
Else
' split off the number part, convert to number, add 1
nSEQ = Val(Right$(varMax, 2)) + 1
End If
GetNextEmployeeId = UCase(strNameComp) & Format(nSEQ, "00")
End Function
【问题讨论】:
标签: ms-access vba ms-access-2010