这个问题可能已经被问过数百次了,但我似乎很难找到一个现有的问题来解决我的情况。
我的问题是如何访问位于表的最后一条记录中的主键值?例如,如果这是我的表:
WO编号 | 帐户名称 |
---|---|
WO1001 | 乔的食品市场 |
WO1002 | 家庭食品 |
WO1003 | 乡下人烟草 |
从表单中,当我选择“添加记录”时,我想访问值“WO1003”(然后能够向其中添加一个)。我发现了一些接近的东西,但它改变了最后一个值,它不会在新记录中使用它。因此,需要明确的是 - 使用上表,我想从我的表单创建一条新记录,其主键值为“WO1004”,但我正在努力弄清楚如何将新主键添加到新记录中。
我发现接近的代码是:
Dim rs As Recordset
'Query the last value, get the WONumber
Set rs = CurrentDb.OpenRecordset("SELECT TOP 1 WONumber FROM tblWorkOrders ORDER BY WONumber DESC")
'Open it up for editing
rs.Edit
'Increment the number by 1
rs.Fields("WONumber").Value = Left(rs.Fields("WONumber").Value, 2) & CInt(Mid(rs.Fields("WONumber").Value, 3, Len(rs.Fields("WONumber").Value) - 2)) + 1
'Update the recordset
rs.Update
最好替换
WO
并将剩余的字符转换为数字,而不是使用该函数限制数量Mid
。请记住,您的解决方案将在多用户环境中导致冲突错误。
脚步:
DMax()
使用内置函数获取最大值。Nz()
如果使用该函数表为空,请提供默认值“0” 。然后,您需要添加新记录,而不是编辑最后一条记录。
考虑使用表单的Before Insert事件来计算新的
WONumber
.我的示例表单包括一个名为“txtWONumber”的文本框,它显示
WONumber
当前记录中的 。WONumber
通过这种方法,只要您在记录的任何其他字段中输入任何内容,就会计算新值并将其显示在表单的新记录中。