ı try to do these like this by using row numbers in query;
The Serialize function can be used to create 'row numbers' or a rank order in a query
Code:
Public Function Serialize(qryname As String, KeyName As String, keyValue) As Long
On Error GoTo Err_Handler
'used to create rank order for records in a query
'add as query field
'Example Serialize("qry1","field1",[field1])
Set rst = CurrentDb.OpenRecordset(qryname, dbOpenDynaset, dbReadOnly)
rst.FindFirst Application.BuildCriteria(KeyName, rst.Fields(KeyName).type, keyValue)
Serialize = Nz(rst.AbsolutePosition, -1) + 1
rst.Close
Set rst = Nothing
Exit_Handler:
Exit Function
Err_Handler:
MsgBox "Error " & Err.Number & " in Serialize procedure: " & Err.Description
GoTo Exit_Handler
End Function
For example, in this query, the Serialize function is used to create a TableID field which serves as the row number:
Code:
SELECT Serialize("qryJSONFileTables","TableName",[TableName]) AS [TableID], MSysObjects.Name AS TableName, qryJSONFileTableNames.FileID, qryJSONFileTableNames.FileNameFROM qryJSONFileTableNames INNER JOIN MSysObjects ON qryJSONFileTableNames.TableName = MSysObjects.Name
WHERE (((MSysObjects.Type)=1) AND ((MSysObjects.Flags)=0))
ORDER BY MSysObjects.Name;