powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Задачка про сортировку
7 сообщений из 7, страница 1 из 1
Задачка про сортировку
    #32121741
newDave
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый народ, не подкинете идею, как отсортировать записи чтобы не учитывались кавычки в начале поля. Ну например чтобы "Маша INC" просто Маша INC без кавычек располагались ряом при отображении. Догадываюсь, что для этого нужна функция которая бы убивала кавычки в начале строки. Конечно можно написать ф-ю на VBA, которая бы проверяла есть ли в начале ", и возвращала остальную часть строки. Но есть подозрение, что это можно сделать красивее, например с помощью рег. выражений, или шаблонов каких-нибудь. Как будет наиболее эффективно?
...
Рейтинг: 0 / 0
Задачка про сортировку
    #32121761
Suslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага, разбежался - рег. выражения и шаблоны. :)

Насколько я понял, надо в SQL-запросе это всё отсортировать? В случае, если кавычки встречаются только "по краям" строки, имеет смысл попробовать использовать в запросе функцию Replace и заменять кавычки на пустую строку. В противном случае, на мой взгляд, проще функцию написать.

P.S. Рад буду ошибиться - у меня иногда тоже такие проблемы возникают.
...
Рейтинг: 0 / 0
Задачка про сортировку
    #32121858
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполняй replace("Поле с кавычками",chr(34),"",-1,-1,vbTextCompare)
для всех полей . Прада убъются все кавычки - ну и фиг с ними. По результату этой функции сортируй - а на вывод пользователя - поле без изменения (то которое с кавычками)
А рег. шаблоны применять можно и библиотека виндовская есть - только забыл какая :-(
Поищи в Яндексе: рег. выражения + Акес
...
Рейтинг: 0 / 0
Задачка про сортировку
    #32121918
Suslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Библиотеки-то есть, но....
...даже установив библиотеку для работы с рег. выраженями, в SQL-запрос её функции не воткнуть. Только перебирая Recordset.

Если такой вариант устроит newDave - то на здоровье
...
Рейтинг: 0 / 0
Задачка про сортировку
    #32121930
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>в SQL-запрос её функции не воткнуть

Ну можно использовать динамический SQL, перебор рекордсета, временный таблицы и т.п. Т.е. все это очень усложнит (и замедлит) выполнение запроса. Если это нужно - пусть делает, если важна скорость пусть все остается как есть.
И вообще, что за фигня в базе две Маша INC одна с кывачками другая без. Надо оторвать руки оперраторам, а затем ввести правила наименований объектов базы (где обозначить как писать названия фирм). А можно и структуру у базы изменить: сделать две таблицы в 1 - храниться организационно-правовая форма (АО,ООО,ПБОЮЛ), во 2 - наименование фирмы. Удобно..., хотя скорее всего это излишняя нормализация.
...
Рейтинг: 0 / 0
Задачка про сортировку
    #32122310
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если юзать часто и в больших хранилищах, надо добавить поле (юсерам для правки его не давать), либо даже таблу «нормализованных представлений». Туда программно (если сиквел – триггером) если нет – событиями помещать «нормализованные» представления – без лишних символов. (более общо - в неком стандартном порядке ввода слов, - «ООО», например тыкать взад/вперед, и т.п.). И проиндексировать. Кроме того, если у вас есть таблица «нормальных представлений» (со связью один – много), все прочие представления могут иметь какое угодно написание, вплоть до иностранщины в разных языках. А выводиться будут пачками. И процесс «выдергивания ног» у юзеров сведётся к понуждению выбрать подчиненные представления к «нормализованным». Все остальные способы – это преобразование и пересортировка «на лету», т.е. заведомо без индексов, т.е. сортировка будет вестись _после_ выполнения преобразования по всему набору данных.

Идея: если жадно отводить дополнительно длинное текстовое поле – можете при вводе «обдирать» со строки «спец символы», помещая их в некой табличке (вторичн. ключ, позиция в строке, символ), а при необходимости представить строку во все красе – собирать простейшими строковыми ф-ями.

А так – пишете поле сортировки – Order By iif(left(aStr,1)=””””, mid(aStr,2), aStr). Есть, правда, предположение, что в индексированном поле лучше разбить на 2 и взять UNION (штоп хотя б не вычислять оба выражения iif-а. для всех записей, да, может статься, сортировка порезвей буде – тут надо вглупь лезть, с наскока и не скажешь…), но тады набор будет не обновляемым.
...
Рейтинг: 0 / 0
Задачка про сортировку
    #32122485
newDave
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь за то, что пропал надолго. Интересный метод предлагаете с таблицей «нормализованными представлениями». Красиво. Но пока наверно обойдусь чем-то вроде iif(left(aStr,1)=””””, mid(aStr,2), aStr), или replace попробую. А операторам конечно надо руки оборвать, но я думаю параллельно с этим создавать условия, чтобы они меньше косячили.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Задачка про сортировку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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