You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取表中最后一条记录的主键并生成新主键

Access表单添加记录时自动生成递增WONumber主键的解决方案

原代码的问题在于直接编辑了查询到的最后一条记录,导致旧记录被修改,而非生成新记录。正确的逻辑应该是先获取最后一条记录的编号,计算出新编号后,新增一条记录并将新编号赋值给它。

修正后的代码如下:

Dim rs As Recordset
Dim lastWO As String
Dim newWO As String
Dim numPart As Integer

' 获取最后一条记录的WONumber
Set rs = CurrentDb.OpenRecordset("SELECT TOP 1 WONumber FROM tblWorkOrders ORDER BY WONumber DESC")

If Not rs.EOF Then
    lastWO = rs.Fields("WONumber").Value
    ' 提取数值部分并加1
    numPart = CInt(Mid(lastWO, 3)) + 1
    ' 拼接新的WONumber,确保数值部分补零(比如WO1003→WO1004)
    newWO = Left(lastWO, 2) & Format(numPart, "0000") ' 这里的0000可以根据实际位数调整
Else
    ' 如果表为空,生成初始编号,比如WO1001
    newWO = "WO1001"
End If
rs.Close

' 打开表的记录集准备新增记录
Set rs = CurrentDb.OpenRecordset("tblWorkOrders", dbOpenDynaset)
rs.AddNew
rs.Fields("WONumber").Value = newWO
' 这里可以添加其他字段的赋值,比如rs.Fields("其他字段").Value = 对应值
rs.Update
rs.Close
Set rs = Nothing

关键说明:

  • 先单独查询获取最后一条记录的编号,不直接编辑这条记录
  • 处理表为空的边界情况,避免报错
  • 使用Format函数确保数值部分的位数一致(比如保持4位数字)
  • 调用rs.AddNew创建新记录,赋值后执行rs.Update保存

内容的提问来源于stack exchange,提问作者Rich G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:56:02