|
|
|
Задачка про сортировку
|
|||
|---|---|---|---|
|
#18+
Уважаемый народ, не подкинете идею, как отсортировать записи чтобы не учитывались кавычки в начале поля. Ну например чтобы "Маша INC" просто Маша INC без кавычек располагались ряом при отображении. Догадываюсь, что для этого нужна функция которая бы убивала кавычки в начале строки. Конечно можно написать ф-ю на VBA, которая бы проверяла есть ли в начале ", и возвращала остальную часть строки. Но есть подозрение, что это можно сделать красивее, например с помощью рег. выражений, или шаблонов каких-нибудь. Как будет наиболее эффективно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2003, 10:08 |
|
||
|
Задачка про сортировку
|
|||
|---|---|---|---|
|
#18+
Ага, разбежался - рег. выражения и шаблоны. :) Насколько я понял, надо в SQL-запросе это всё отсортировать? В случае, если кавычки встречаются только "по краям" строки, имеет смысл попробовать использовать в запросе функцию Replace и заменять кавычки на пустую строку. В противном случае, на мой взгляд, проще функцию написать. P.S. Рад буду ошибиться - у меня иногда тоже такие проблемы возникают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2003, 10:18 |
|
||
|
Задачка про сортировку
|
|||
|---|---|---|---|
|
#18+
Выполняй replace("Поле с кавычками",chr(34),"",-1,-1,vbTextCompare) для всех полей . Прада убъются все кавычки - ну и фиг с ними. По результату этой функции сортируй - а на вывод пользователя - поле без изменения (то которое с кавычками) А рег. шаблоны применять можно и библиотека виндовская есть - только забыл какая :-( Поищи в Яндексе: рег. выражения + Акес ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2003, 11:13 |
|
||
|
Задачка про сортировку
|
|||
|---|---|---|---|
|
#18+
Библиотеки-то есть, но.... ...даже установив библиотеку для работы с рег. выраженями, в SQL-запрос её функции не воткнуть. Только перебирая Recordset. Если такой вариант устроит newDave - то на здоровье ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2003, 11:58 |
|
||
|
Задачка про сортировку
|
|||
|---|---|---|---|
|
#18+
>в SQL-запрос её функции не воткнуть Ну можно использовать динамический SQL, перебор рекордсета, временный таблицы и т.п. Т.е. все это очень усложнит (и замедлит) выполнение запроса. Если это нужно - пусть делает, если важна скорость пусть все остается как есть. И вообще, что за фигня в базе две Маша INC одна с кывачками другая без. Надо оторвать руки оперраторам, а затем ввести правила наименований объектов базы (где обозначить как писать названия фирм). А можно и структуру у базы изменить: сделать две таблицы в 1 - храниться организационно-правовая форма (АО,ООО,ПБОЮЛ), во 2 - наименование фирмы. Удобно..., хотя скорее всего это излишняя нормализация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2003, 12:07 |
|
||
|
Задачка про сортировку
|
|||
|---|---|---|---|
|
#18+
если юзать часто и в больших хранилищах, надо добавить поле (юсерам для правки его не давать), либо даже таблу «нормализованных представлений». Туда программно (если сиквел – триггером) если нет – событиями помещать «нормализованные» представления – без лишних символов. (более общо - в неком стандартном порядке ввода слов, - «ООО», например тыкать взад/вперед, и т.п.). И проиндексировать. Кроме того, если у вас есть таблица «нормальных представлений» (со связью один – много), все прочие представления могут иметь какое угодно написание, вплоть до иностранщины в разных языках. А выводиться будут пачками. И процесс «выдергивания ног» у юзеров сведётся к понуждению выбрать подчиненные представления к «нормализованным». Все остальные способы – это преобразование и пересортировка «на лету», т.е. заведомо без индексов, т.е. сортировка будет вестись _после_ выполнения преобразования по всему набору данных. Идея: если жадно отводить дополнительно длинное текстовое поле – можете при вводе «обдирать» со строки «спец символы», помещая их в некой табличке (вторичн. ключ, позиция в строке, символ), а при необходимости представить строку во все красе – собирать простейшими строковыми ф-ями. А так – пишете поле сортировки – Order By iif(left(aStr,1)=””””, mid(aStr,2), aStr). Есть, правда, предположение, что в индексированном поле лучше разбить на 2 и взять UNION (штоп хотя б не вычислять оба выражения iif-а. для всех записей, да, может статься, сортировка порезвей буде – тут надо вглупь лезть, с наскока и не скажешь…), но тады набор будет не обновляемым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2003, 16:51 |
|
||
|
Задачка про сортировку
|
|||
|---|---|---|---|
|
#18+
Извиняюсь за то, что пропал надолго. Интересный метод предлагаете с таблицей «нормализованными представлениями». Красиво. Но пока наверно обойдусь чем-то вроде iif(left(aStr,1)=””””, mid(aStr,2), aStr), или replace попробую. А операторам конечно надо руки оборвать, но я думаю параллельно с этим создавать условия, чтобы они меньше косячили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2003, 21:40 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1817&tid=1682079]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 360ms |

| 0 / 0 |
