使用VBA查找位于最后一条记录中的值

时间:2017-07-06 20:12:57

标签: vba ms-access access-vba

我知道之前可能已经问了好几千次,但我似乎无法找到一个现实的问题来解决这个问题。我可以理解。

我的问题是如何访问位于表的最后一条记录中的值?例如,如果这是我的表:

personID personName personNumber
1        Sally      PR32
2        Emily      PR33
3        Joseph     PR34

我想访问值“PR34”(如果可能的话,然后能够操作它)。我知道如何用Dmax找到最后一条记录,但我正在努力弄清楚如何在其中找到一个值。我最终试图取值,将字符串解析为数字,然后将其递增1(然后将字母重新附加)。

2 个答案:

答案 0 :(得分:2)

您也可以在查询中执行此操作:

UPDATE T 
SET T.personNumber = "PR" & CLng(Replace([personNumber], "PR", "")) + 1
WHERE (((T.personID)=(SELECT Max(personID) FROM T)));

其中T是表格的名称。

答案 1 :(得分:1)

如果您使用的是DLookUp / DMax工作流程,则只需使用以下内容:

这为您提供了ID,您已经想到了这一点:

DMax("PersonID", "MyTable")

然后使用该ID查找关联的personNumber:

DLookUp("personNumber", "MyTable", "personID = " & DMax("PersonID", "MyTable"))

但是如果你想操纵它(或者只是提高效率),那么使用记录集是可行的方法:

'Create a recordset
Dim rs As Recordset
'Query the last value, get the personNumber
Set rs = CurrentDb.OpenRecordset("SELECT TOP 1 personNumber FROM MyTable ORDER BY personID DESC")
'Open it up for editing
rs.Edit
'Increment the number by 1
rs.Fields("personNumber").Value = Left(rs.Fields("personNumber").Value, 2) & CInt(Mid(rs.Fields("personNumber").Value, 3, Len(rs.Fields("personNumber").Value) - 2)) + 1
'Update the recordset
rs.Update