И еще один запрос на нумерацию

Valerievna
Дата: 14.01.2012 01:44:43
Уважаемые форумчане, подскажите как добавить нумерацию в запрос с уникальными записями.
Пробовала следующие варианты:

SELECT DCount("[KKS]","Protocol_pr","[KKS]<='" & CStr([KKS]) & "'") AS Выражение1, Protocol_pr.*
FROM Protocol_pr
ORDER BY Protocol_pr.KKS;

и подобные ему, описанные на http://am.rusimport.ru/msaccess/topic.aspx?ID=87. При количестве записей > 200 начинает страшно висеть...
нашла следующий вариант:
For not unique fields you can use this

1)в модуль
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


2)запрос
SELECT DISTINCT *, GetNextNum([AnyField]) AS MyCounter
FROM MyTable
WHERE startNum()=True;


но при выполнении запроса в MyCounter выводит одни 1.
Подскажите как исправить, что-то совсем туплю(
Владимир Саныч
Дата: 14.01.2012 01:50:25
Наши факи смотрели?
EvAnd
Дата: 14.01.2012 01:58:02
Valerievna не так прост, как кажется...
Владимир Саныч
Дата: 14.01.2012 02:11:37
Valerievna
Подскажите как исправить

Надо исправлять сами советы или Вашу реализацию?
EvAnd
Дата: 14.01.2012 02:26:59
Valerievna
Уважаемые форумчане, подскажите как добавить нумерацию в запрос с уникальными записями.
Пробовала следующие варианты:

SELECT DCount("[KKS]","Protocol_pr","[KKS]<='" & CStr([KKS]) & "'") AS Выражение1, Protocol_pr.*
FROM Protocol_pr
ORDER BY Protocol_pr.KKS;

и подобные ему, описанные на http://am.rusimport.ru/msaccess/topic.aspx?ID=87. При количестве записей > 200 начинает страшно висеть...
нашла следующий вариант:
For not unique fields you can use this

1)в модуль
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


2)запрос
SELECT DISTINCT *, GetNextNum([AnyField]) AS MyCounter
FROM MyTable
WHERE startNum()=True;


но при выполнении запроса в MyCounter выводит одни 1.
Подскажите как исправить, что-то совсем туплю(

Файл (ну вы в курсе..._)
EvAnd
Дата: 14.01.2012 02:39:26
Не справимся - объявим HELP! Кто-нибудь поможет...
Valerievna
Дата: 14.01.2012 20:17:31
Владимир Саныч,
FAQ смотрела.
Реализация достаточно объемна, вкратце: используется БД с вкладками (в которых счетчиков нет), она сравнивается различными перекрестными запросами с импортируемыми импортируемыми файлами + куча запросов update\union\select\... В конечном результате получаю несколько запросов и экспортирую их в .xls. Пытаюсь сделать нумерацию на этапе экспортируемых запросов.
Совет, приведенный ниже не работает почему-то, видимо я что-то упускаю

Модератор: Кусок поста удален. Не надо одно и то же постить по два раза, потом через топик не продраться.

EvAnd,
какая уж есть,
вот фрагмент моей программы, необходимо осуществить нумерацию в запросе protocol_sign, (сохранен в access 2000)
Нумератор
Дата: 14.01.2012 22:20:53
Valerievna, делаю точно так, как описано у вас в посте 11903493:
- помещаю в ваш общий модуль Module1 описание переменной curNum и обе функции;
- в запрос вместо MyTable подставляю имя вашего запроса Protocol_sign, а вместо поля AnyField - поле KKS
SELECT DISTINCT GetNextNum(KKS) AS MyCounter, *
FROM Protocol_sign
WHERE startNum()

и все отлично нумеруется.
Valerievna
Дата: 16.01.2012 14:30:18
Нумератор,

Да, спасибо, по невнимательности не сменила AnyField на KKS, и чуть-чуть подправила реализацию, метод работает достаточно быстро!