Microsoft访问自动生成基于名字和姓氏+号码的学生ID

时间:2016-12-28 22:17:44

标签: ms-access

我有一个带有学生表的Access数据库。表中的前三个字段是studentID,ForeName和LastName。

该表已包含约35个学生记录。学生证的形式为AA0000。前两个字符由姓氏和名字的第一个字母组成。 0000是一个4位数字。

我创建了一个表格,用于将数据输入到学生表中。我希望根据以下规则自动生成学生ID

  • 前两个字符分别是姓氏和名字的第一个字母
  • 4位数字比已使用的最大4位数字大1

所以例如如果表中只有学生证的AA1256,BC1267和OK1288,我添加的下一个记录的编号应该是1289.

是否可以通过仅更改我创建的表单上的sutdentID文本框的控件来实现此目的。

我已经尝试将以下代码放在studentID的控件源中(虽然不起作用) =左(LastName,1)&左(forename,1)& (最大(右(studentID,4))+ 1)

感谢任何帮助。 感谢

4 个答案:

答案 0 :(得分:1)

我认为原因是因为你的公式在字段名称周围没有方括号。

尝试:

  

Left([LastName],1) & left([forename],1) & (max(right([studentID],4))+1)

答案 1 :(得分:0)

控制源需要保持学习状态,应该被禁用或锁定。我将表单的“Before Insert”属性设置为“[Event Procedure]”并在自动创建的Form_BeforeInsert子中输入以下VBA代码:

studentid=left(LastName,1) & left(ForeName,1) & _
    Right("0000" & CStr(CInt(Nz(DMax("right(studentid,4)","Student"),0))+1),4)

我看到一个问题,如果学生名称发生变化(如在添加后立即纠正),则需要更改ID。如果它是主键,则需要使用新密钥删除并重新添加记录。如果没有,您可以使用类似的代码更新“Before Insert”事件处理程序中的studentid。我也会留意学生名字中的空白。

答案 2 :(得分:0)

可能是"添加"字符串和数字1不起作用。

因此,尝试在数值上使用Max,添加1,并格式化为四位数:

=Left(LastName,1) & Left(ForeName,1) & Format(Max(Val(Right(studentID,4)))+1,"0000")

答案 3 :(得分:0)

实际上我认为这里真正的答案是不要打扰,只需计算ID并在任何需要的地方显示。毕竟你知道所涉及的所有价值。

将其他所有内容引用回唯一的PK,即数字StudentID。这样,如果有人更改了他们的名字,结婚等,唯一ID并没有改变您所显示的内容。