下面的VBA函数可能证明是有益的:
Public Function GetNextFirstLastID(first_last As String) As String
Dim cdb As DAO.Database, rst As DAO.Recordset, nextN As Long
Set cdb = CurrentDb
Set rst = cdb.OpenRecordset(_
"SELECT Max(CLng(Mid(first_lastID, " & Len(first_last) + 1 & "))) " & _
"FROM mainTable " & _
"WHERE first_lastID LIKE """ & first_last & "#*""", _
dbOpenSnapshot)
If IsNull(rst(0).Value) Then
nextN = 1
Else
nextN = rst(0).Value + 1
End If
rst.Close
Set rst = Nothing
Set cdb = Nothing
GetNextFirstLastID = first_last & nextN
End Function
对于这样的测试数据...
first_lastID
---------------
gord_thompson1
gord_thompson11
gord_thompson2
gord_thom1
...该函数返回
?GetNextFirstLastID("gord_thompson")
gord_thompson12
?GetNextFirstLastID("gord_thom")
gord_thom2
?GetNextFirstLastID("john_smith")
john_smith1
是不是太晚了在你的设计过程中做出这些单独的数据字段? –
是的,主表或多或少设置 – MrP
设计你的表有没有first_name,last_name和代理自动生成的ID字段为时已晚?这永远不会有效,运行时问题的可能性很高,而且在设计正确时不需要做这样的事情。名称永远不会是唯一的,因此向它们添加数字以使它们独一无二,这使得查询它们变得更加困难。使用代理键。这确实是一个不可行的设计。 – HLGEM