powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разноуровневый список: сортировка в запросе
30 сообщений из 30, показаны все 2 страниц
Разноуровневый список: сортировка в запросе
    #39681603
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуй, Форум

Хочу спросить Вас, как можно решить такую проблему:
Дано таблица с пунктами нормативной документации:
IDПункЗначения21.42.53.3.75.1.1.95.1.17.85.1.7.
Как можно сделать запрос чтобы список был по порядку возрастания (По лоГГике, а не по значению символа), исключая такие случаи:
95.1.17.85.1.7.
из теоретических размышлений:
1. Заставлять людей ставить нули в нужных местах (но они всё равно не знают сколько их нужно)
2. Как то распарсивать, но понятия нет ни как это делать вообще, ни как это реализовать в sql запросе
____
vk.com/taenfox
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681608
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И ещё одна проблема в то же лукошко:
хочется как то добавлять отступы в соответствии с уровнем списка
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681619
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MokeevP1. Заставлять людей ставить нули в нужных местах (но они всё равно не знают сколько их нужно)
2. Как то распарсивать, но понятия нет ни как это делать вообще, ни как это реализовать в sql запросе
деревья, сборки, этапы, версии сборок.
Это неоднократно осуждалось не только на нашей ветке.
Это текстовое поле и нули нужны для сортировки.
По этому сколько знакомест в каждой части вам придется определяться обязательно и прцедуркой поправлять пользователей (то есть вставлять нулики)
С уважением.
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681629
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Long from IP
Не?
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681637
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PredeclaredLong from IP
Не?

Не, не хочу рисковать при ситуации, когда я захочу поменять трактовку, старую сделать недействительной, а новая получится в самом низу списка, потому что id - счётчик
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681638
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ROIMokeevP1. Заставлять людей ставить нули в нужных местах (но они всё равно не знают сколько их нужно)
2. Как то распарсивать, но понятия нет ни как это делать вообще, ни как это реализовать в sql запросе
деревья, сборки, этапы, версии сборок.
Это неоднократно осуждалось не только на нашей ветке.
Это текстовое поле и нули нужны для сортировки.
По этому сколько знакомест в каждой части вам придется определяться обязательно и прцедуркой поправлять пользователей (то есть вставлять нулики)
С уважением.

А если я категорически не знаю на сколько уровней очередной документописец захочет погрузится в структуру?
И пользователю придётся на каждый уровень отвечать в inputbox циферку?
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681643
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если структура именно такая - строго цифры, строго разделённые точками, и если имеется некое ограничение на количество цифр - я бы нарисовал функцию, которая форматирует эти номера в номера с фиксированным количеством ведущих нулей. Типа

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
const cnt as integer = 10

function myformat(idx as string) as string
  arr=split(idx, ".")
  for i = lbound(arr) to ubound(arr)
    arr(i) = right(string(cnt, '0') & arr(i), cnt)
  next i
  myformat = join(arr, '.')
end function


И использовал её в запросах для сортировки.
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681676
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MokeevP..., потому что id - счётчик
А при чем тут ID и счетчик?
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681682
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MokeevP
А если я категорически не знаю на сколько уровней очередной документописец захочет погрузится в структуру?
И пользователю придётся на каждый уровень отвечать в inputbox циферку?
У меня с деревом, при его заполнении, добавлении - перемещении конечных нод и папок была такая же проблема....ввел в таблицу доп поле - уровень - и заполняю его функцией при каждом добавлении- перемещении
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681684
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PredeclaredMokeevP..., потому что id - счётчик
А при чем тут ID и счетчик?
При том что я не знаю как счётчику произвольное значение присвоить

Возможно, я не правильно понял Ваше предложение
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681687
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serg197311MokeevPА если я категорически не знаю на сколько уровней очередной документописец захочет погрузится в структуру?
И пользователю придётся на каждый уровень отвечать в inputbox циферку?
У меня с деревом, при его заполнении, добавлении - перемещении конечных нод и папок была такая же проблема....ввел в таблицу доп поле - уровень - и заполняю его функцией при каждом добавлении- перемещении

и, наверно, родительский пункт, да?
Вариант нравится, но потом запрос всё равно не знаю как сделать
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681700
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaЕсли структура именно такая - строго цифры, строго разделённые точками, и если имеется некое ограничение на количество цифр - я бы нарисовал функцию, которая форматирует эти номера в номера с фиксированным количеством ведущих нулей. Типа

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
const cnt as integer = 10

function myformat(idx as string) as string
  arr=split(idx, ".")
  for i = lbound(arr) to ubound(arr)
    arr(i) = right(string(cnt, '0') & arr(i), cnt)
  next i
  myformat = join(arr, '.')
end function


И использовал её в запросах для сортировки.

А если попробовать так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function myformat(idx as string) as integer

dim mf as string

do while left(idx,1)<>"."
  mf= mf & left(idx,1)
  idx = right(idx, len(idx)-1)
loop

mf = mf & "."

do while len(idx)<>0
   if left(idx,1)="." then go to SkipDot
   
   mf = mf & right(cstr(left(idx,InStr(idx,"."))/1000),4)
   idx = right(idx, len(idx)-InStr(idx,"."))

   SkipDot:
   idx = right(idx, len(idx)-1)
loop
end function



Вообще сейчас это на коленке писал и задумка была круче исполнения, но, если тут ещё чуть-чуть поколдовать оно ведь может и списки а,б,в воспринимать... наверно... если оно вообще работает :D
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681702
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MokeevP
и, наверно, родительский пункт, да?
Вариант нравится, но потом запрос всё равно не знаю как сделать
Ну у меня - да, родительский...
У вас надо нарисовать функцию которая бы выдавала некую абсолютную величину, рассчитанную из кода пункта, разместить ее в модуле под public function, и при выполнении запроса указывать сортировку по ней....
Саму функцию сейчас рисовать не буду - устал - но идея такая: цифра до первой точки - число тысяч, от первой до второй - сотен, после второй - единицы. Достаем символы через instr и mid, конвертируем их через eval и складываем.
Гуру, не бейте сильно ногами если что не так написал......
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681704
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну может стоит порядок нулей увеличить... чтоб 3.17.4 с 4.5.2 правильно разместить....
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681705
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Serg197311]MokeevPГуру, не бейте сильно ногами если что не так написал......

Не переживайте, бить будут меня)
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681706
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MokeevP,
В какой то подобной БД, например справочник УК, я создал 3 числовых поля
Статья
Часть
Пункт
Сортировал по ним
А визуально в запросе соединял эти 3 поля.
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681708
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛапухMokeevP,
В какой то подобной БД, например справочник УК, я создал 3 числовых поля

А если есть возможность сделать так - ИМХО самый лучший выход...
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681711
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serg197311ЛапухMokeevP,
В какой то подобной БД, например справочник УК, я создал 3 числовых поля

А если есть возможность сделать так - ИМХО самый лучший выход...
Но это опять таки при известном количестве уровней.

Суть моей бд в выставлении замечаний к отчетам. К этим замечаниям нужно прикрутить нормативку. А нормативку у нас это различные отраслевые регламенты, стандарты нашей организации, стандарты этой системы организаций, инструкции и методички и короче хрен его знает какие там уровни :D
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681717
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MokeevP, навряд ли больше 4.
Для 4 параметра можно придумать имечко, например - подпункт.
Зато простенькое и со вкусом.
Даже такой - Лапух как я сможет понять логику работы с БД, а уж ваши пользователи или вы сами , как разработчик и подавно.
Иногда использую одно числовое поле - Номер по порядку.
Навводил данных, хоть со 100 подпунктами, пронумеровал как тебе хотса и отсортировал по этому полю.
Нудно, но именно так как тебе захочется.
Лично я сторонник первого варианта из 3-х таблиц и в 3-й таблице 2 поля, если есть 4-й подпункт.
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681734
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лапух, тока щас мои тараканы в голове подсказали, что я кому то помогал делать БД по военной части, а там градация типа такой была
Армия
Корпус
Дивизия
Полк
Батальон
Рота
Взвод
Отделение
Возможно - Группа (спецназ)
И это было реализовано на 2-х таблицах.
Как только доберусь до ПК из планшета, то выложу если интересно.
Хотя это наверное общеизвестный метод решения задачи.
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681739
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MokeevPА если попробовать такА в чём профит?
Для смешанных данных можно в моём коде вместо нулей добавлять и пробелы - работать будет точно так же.
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681784
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaMokeevPА если попробовать такА в чём профит?
Для смешанных данных можно в моём коде вместо нулей добавлять и пробелы - работать будет точно так же.

Не знаю как на счёт профита, я твой просто не понимаю, скилл не тот
Но интересно - будет работать или нет мой, завтра оба попробую и посмотрю кто куды и что к чему
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681787
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛапухЛапух, тока щас мои тараканы в голове подсказали, что я кому то помогал делать БД по военной части, а там градация типа такой была
Армия
Корпус
Дивизия
Полк
Батальон
Рота
Взвод
Отделение
Возможно - Группа (спецназ)
И это было реализовано на 2-х таблицах.
Как только доберусь до ПК из планшета, то выложу если интересно.
Хотя это наверное общеизвестный метод решения задачи.

в отношении меня - "Нищему что ни дай - всё прибыль", посему буду рад изучить, клади :)

Я понимаю как решить такую задачу в разрезе выдачи отчёта через VBA
Но я не очень понимаю как сделать это посредством Select`а
В моей настольной книжке есть параграф про рекурсивные запросы и, насколько я это понимаю, это то, что нужно, но практически применить их я пока не в силе, просто понимания ещё нет, натурально смотрю в книгу и вижу фигу
Книга, кстати, из серии "для чайников"
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681792
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, а полтора километра Union'ов - это, наверно, не слишком адекватное решение?)
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681819
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MokeevP, посмотрел пример, на свежую голову, что хотел показать.
Там немного не то, точнее совсем не то, что вам нужно.
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681826
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MokeevPя твой просто не понимаю, скилл не тотДа он прост до... ну не знаю до чего.
Берём входную строку. Делим её (Split) по разделителю точка на элементы в массив. Потом каждый элемент добиваем спереди нулями - добавляем слева нулей заведомо больше, потом отрезаем справа сколько надо символов. После чего собираем массив (Join) обратно в строку с тем же разделителем.
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681862
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaMokeevPя твой просто не понимаю, скилл не тотДа он прост до... ну не знаю до чего.
Берём входную строку. Делим её (Split) по разделителю точка на элементы в массив. Потом каждый элемент добиваем спереди нулями - добавляем слева нулей заведомо больше, потом отрезаем справа сколько надо символов. После чего собираем массив (Join) обратно в строку с тем же разделителем.

Понял, осознал, спасибо!)
Мой код отправляется на помойку :D

Бонусный вопрос - как посчитать уровни?
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681864
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MokeevPкак посчитать уровни?
Код: vbnet
1.
Level = LEN(idx) - LEN(REPLACE(idx, ".", ""))
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681865
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну или
Код: vbnet
1.
Level = UBound(Split(idx, "."))
...
Рейтинг: 0 / 0
Разноуровневый список: сортировка в запросе
    #39681866
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, премного благодарен Вам!

Спасибо всем откликнувшимся!
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разноуровневый список: сортировка в запросе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]