Иногда перед программистом встает задача: пронумеровать записи из некоторой таблицы, используя запрос.

  Конечно, можно добавить в таблицу поле и пройтись по нему recordset'ом. Но что делать в случае, если Вы имеете дело со ссылкой на таблицу, находящейся в другом файле, или со ссылкой на текстовый файл? Часто именно в этом случае и нужен счетчик, для того, чтобы импортировать в Вашу базу только часть данных из внешней таблицы или файла.

  Вот одно из решений этой задачи:

В каком-нибудь модуле пишем:

Private curNum As Long

Public Function startNum() As Boolean
  curNum = 0
  startNum = True
End Function

Public Function GetNextNum(anyField) As Long
  curNum = curNum + 1
  GetNextNum = curNum
End Function

В запросе пишем:

SELECT DISTINCT *, GetNextNum([AnyField]) AS MyCounter
FROM MyTable
WHERE startNum()=True;

  Пробовал, работает. 

  Этот и другие варианты решения задачи описаны здесь.