Public Function GetNextIndex(strPrefix As String, strTargetTable As String, strFieldName As String) As String
Dim db As Database
Dim rs As Recordset
Dim strSQL As String
Dim strNumber As String
Dim strNewNumber As String
Dim lngMaxNumber As Long
Dim intPrefixLength As Integer
strSQL = "SELECT " & strFieldName & " FROM " & strTargetTable & " ORDER BY " & strFieldName
Debug.Print strSQL
intPrefixLength = Len(strPrefix)
lngMaxNumber = 0
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
With rs
.MoveFirst
Do While Not .EOF
If Left(.Fields(strFieldName), intPrefixLength) = strPrefix Then
strNumber = .Fields(strFieldName)
strNumber = Right(strNumber, Len(strNumber) - intPrefixLength)
If lngMaxNumber < CLng(strNumber) Then
lngMaxNumber = CLng(strNumber)
End If
End If
.MoveNext
Loop
End With
lngMaxNumber = lngMaxNumber + 1
strNewNumber = CStr(lngMaxNumber)
'Now add extra "0" to front
Do While Len(strNewNumber) < Len(strNumber)
strNewNumber = "0" & strNewNumber
Loop
'now add prefix back
strNewNumber = strPrefix & strNewNumber
GetNextIndex = strNewNumber
End Function