I don't think you can do it with a query since I can't think of a way to limit a query's scope to just three lines. However, you might be able to do it by using DAO. The following should read in three locations from the input line number and place the concatenated value in a different field of the third record and assumes the data is in three sequential records:
Call the routine by specifying the starting record number in the call, e.g. Join(127)
Sub Join (StartLine as integer)
Dim DB as Database
Dim RS as Recordset
Dim F1 as string, F2 as String, F3 as String
Set DB = CurrentDB
Set RS = DB.OpenRecordset("DataTable"
With RS
.Index = "PrimaryKey" 'Assuming the line number is primary
.Seek "=", StartLine 'Move pointer to starting line
F1 = !Location 'Name of field in table
.MoveNext
F2 = !Location
.MoveNext
F3 = !Location
.Edit
!CombinedField = F1 & " " & F2 & " " & F3
.Update
.Close
End With
Be careful however, since DAO will often refer to lines in the table in their native format (order in which entered) and not in their indexed and visible form. Sometimes the two are not the same and can result in difficult debugging. If this happens you might have to change the .MoveNext to another seek operation where you increment the line number directly.
Uncle Jack