3 / 3 / 0
Регистрация: 09.05.2009
Сообщений: 16
|
|
1 | |
Нумерация строк запроса03.07.2009, 00:03. Показов 30643. Ответов 29
Метки нет (Все метки)
Как можно реализовать последовательную нумерацию строк запроса и вывести ее в первое поле строки?
Спасибо!
0
|
03.07.2009, 00:03 | |
Ответы с готовыми решениями:
29
Нумерация дубликатов в колонке запроса Нумерация строк Нумерация строк в таблице Нумерация строк в запросе |
10065 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
|
|||||||||||||||||||||
03.07.2009, 00:51 | 2 | ||||||||||||||||||||
Постановка задачи 1. Запрос без полей MEMO и OLE.
Пусть имеется таблица (запрос) MyQuery с полем MyField. В запросе могут быть другие поля, допускающие предикат DISTINCT. MyQuery может быть отсортирован любым образом или вообще не отсортирован. Требуется построить запрос, не меняющий порядка следования записей MyQuery, но добавляющий вычисляемое поле Num, представляющее номер строки MyQuery, начиная с 1. Решение. Текст запроса:
Комментарий 2. Предикат DISTINCT используется для превращения динамического запроса в статический. (В динамическом запросе метод не работает.) Своей прямой роли предикат DISTINCT не играет, так как все строки результирующего запроса уникальны из-за нумерации. Однако он препятствует использованию в запросе полей MEMO и OLE. Эти поля можно преобразовать в тип String, применяя функцию Mid(Field_MEMO_OLE,1). После чего конфликт исчезнет, но поля OLE потеряют свою функциональность. Если есть только поля MEMO, то такой подход применим. Постановка задачи 2. В запросе допускаются любые поля. Пусть имеется таблица (запрос) MyQuery с полем MyField. В запросе могут быть любые другие поля. MyQuery может быть отсортирован любым образом или вообще не отсортирован. Требуется построить запрос, не меняющий порядка следования записей MyQuery, но добавляющий вычисляемое поле Num, представляющее номер строки MyQuery, начиная с 1. Решение. Текст запроса:
О нумерованном динамическом запросе. Улучшить метод получения нумерованного динамического запроса не удалось. Более того, разработать метод, нумерующий запрос со скоростью = C*n, по-видимому, невозможно. Поэтому для полноты привожу метод 3 из упомянутой выше статьи.
КритерийСравнения для текста: "MyField <='" & MyField & "'" Примечание. Следует отметить, что реальная необходимость применения нумерованного динамического запроса возникает в только формах, предусматривающих корректировку данных. А в этом случае можно применить следующий прием: - форму строим на нумерованном статическом запросе; - корректировку проводим в свободном поле формы; - после корректировки изменяем прямым доступом соответствующее поле в основной таблице; - обновляем запрос в форме. Примерно таким же образом можно ввести и новую запись. Все это, конечно, осложняет программирование, но резко увеличивает скорость исполнения. Разница в скоростях исполнения отчетливо видна уже на запросах в 1000 записей. (с)копипащено
5
|
3 / 3 / 0
Регистрация: 09.05.2009
Сообщений: 16
|
|||||||||||
03.07.2009, 01:34 [ТС] | 3 | ||||||||||
Вот если взять ваш пример, пусть MyField=kod, MyQuery=1
То куда код
0
|
10065 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
|
||||||
03.07.2009, 01:42 | 4 | |||||
0
|
3 / 3 / 0
Регистрация: 09.05.2009
Сообщений: 16
|
|
03.07.2009, 01:52 [ТС] | 5 |
Спасибо!
Появилась нумерация, но не решена основная задача - по идее нужно пронумеровать уже отсортированный по abiturients.exam1_value список.
0
|
10065 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
|
||||||
03.07.2009, 02:00 | 6 | |||||
ну тогда делай сложный зыпрос. т.е.
на базе твоего запроса следующий запрос
0
|
3 / 3 / 0
Регистрация: 09.05.2009
Сообщений: 16
|
|||||||||||
03.07.2009, 02:16 [ТС] | 7 | ||||||||||
Спасибо! Принцип понял. Получилось.
А что думаете про этот способ? Q7: Как сымитировать счетчик в обычном запросе либо ленточной форме? A1:
Примечание 2. Способ 1 быстрее работает, но является необновляемым. Примечание 3. Аналогичный вопрос в другом разделе FAQ:
1
|
3 / 3 / 0
Регистрация: 25.06.2015
Сообщений: 50
|
||||||
04.11.2015, 16:02 | 8 | |||||
Прошу помощи, сам не разобрался.
Создаю запрос, в котором нужно получить список литературных источников, расположенных в алфавитном порядке, и пронумерованных по возрастанию. Есть таблица, в которой эти литературные источники расположены хаотично. Для этого создаю запрос, в котором выбираются литературные источники и сортируются по алфавиту. И в отдельном поле присваиваются новые номера. Использую такой запрос:
Но не могу его настроить, чтобы нумерация начиналась с произвольного значения (например, 2 или 3). Если ставлю (((Numeration())=1)) - запрос никаких записей не показывает вообще, хотя их 59. Прошу помочь настроить.
0
|
9108 / 6037 / 590
Регистрация: 27.03.2013
Сообщений: 19,813
|
|
04.11.2015, 16:17 | 9 |
Может попробовать, в запросе. в режиме конструктора. под нужным полем. в - Условие отбора , написать попроще, типа -
Numeration>=2 У вас же в условии отбора Numeration=0, соответственно ни чего и не покажет, т. к. номеров с 0 нет
0
|
26815 / 14494 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
||||||
04.11.2015, 16:53 | 10 | |||||
Прибавляете в запросе нужное значение к Numeration. Индексация начнется с числа на 1 больше указанного. Напишете Numeration(НазИст)+2, начнется с 3. И так далее.
1
|
3 / 3 / 0
Регистрация: 25.06.2015
Сообщений: 50
|
|
04.11.2015, 17:02 | 11 |
Numeration>=2 - не срабатывает - запрос никаких записей не показывает вообще.
Если Numeration=0, то запрос выдаёт все 59 записей. Если Numeration>1, запрос выдаёт 0 записей. Добавлено через 6 минут mobile, УРА!!! Это то, что надо! Простите, если расшумелся Numeration(НазИст)+2 - это то, чего мне не хватало, и что я не нашёл. Спасибо, приятно иметь дело со спецами. Выручили,
0
|
132 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 19
|
||||||||||||||||||||||||||||||||||||||||||||
19.05.2016, 20:23 | 13 | |||||||||||||||||||||||||||||||||||||||||||
Здравствуйте. А можно как то отнумеровать сразу несколько фрагментов таблицы?
Чтобы каждый фрагмент - отдельно - своими номерами. Например, фрагмент [ЗГ]="зг1" и фрагмент [ЗГ]="зг2" получили номера, начиная от номеров [макс_ном] из справочника, зг1 - от 100 зг2 - от 200 чтобы получилась нумерация как в третьей табличке:
0
|
9108 / 6037 / 590
Регистрация: 27.03.2013
Сообщений: 19,813
|
|
19.05.2016, 20:31 | 14 |
Слияние: [ЗГ]&[макс_ном]
0
|
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
|
||||||
19.05.2016, 20:36 | 15 | |||||
123uzer, Это можно сделать через условие (только надо понять его принцип). может так:
0
|
132 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 19
|
|
19.05.2016, 20:59 | 16 |
В конструкторе запросов в поле ном вставил: обновить на Numeration([ном])+справочник![макс_ном] (справочник и запрос1 связаны один к одному).
Наверно после плюсика что то не то написал. Не сработало.
0
|
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
|
||||||
19.05.2016, 21:09 | 17 | |||||
123uzer, вы пример не делаете. Сделал сам (другим способом). Получились зг с номером первой цифры трехзначного числа (любого числа). Смотрите вложение (Запрос1).
0
|
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
|
|
20.05.2016, 19:01 | 20 |
123uzer, не понял, что надо, но изменив схему данных получил что-то.
а по хорошему надо создать новую тему, т.к. ваша совсем не подходит под предложенную.
0
|
20.05.2016, 19:01 | |
20.05.2016, 19:01 | |
Помогаю со студенческими работами здесь
20
Нумерация строк в запросе Нумерация строк в запросе Нумерация строк в отчете Нумерация строк в запросе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |