![]() |
|
|
![]()
|
|
| Garmahis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: нет Всего: 4 |
Есть MS SQL Server 2000 и на нём таблица например Table. В таблице две колонки скажем A и B. В первой колонке идёт данные типа varchar и выглядят так - ЗБ № 10
надо её отобразить и отсортировать. Используем AdoQuery, Dataset и DBGridEh. SQL пишем SELECT * FROM Table ORDER BY A и видим что таблица отсортирована в следующем порядке: ЗБ № 1 ЗБ № 10 ЗБ № 11 ЗБ № 2 ЗБ № 3 ... Как заставить сортировать в нормальном порядке что бы после одного шло 2 и тд? |
|||
|
||||
| Grig |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: 4 Всего: 16 |
Надеюсь, ЗБ № - величина постоянная?
Тогда держи запросик:
Добавлено @ 12:43 вот даже так:
Добавлено @ 12:45 Пояснение: ЗБ № - вместе с пробелом на конце занимает 5 символов, то, что идет после этого я преобразовываю в int и сортирую по этому полю. Удачи! Это сообщение отредактировал(а) Grig - 10.5.2006, 12:49 -------------------- |
||||
|
|||||
| Garmahis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: нет Всего: 4 |
К сожалению может меняться.... И не только ЗБ но и сам номер может принять вид например 10(65)
|
|||
|
||||
| Grig |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: 4 Всего: 16 |
Garmahis, ну тогда потрудись выложить все возможные значения этого поля по принципу:
Количество слов в ячейке, числовой формат. Кстати, а если 10(65) то сортировать его как 10 или 65? -------------------- |
|||
|
||||
| Grig |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: 4 Всего: 16 |
Немного модернизировал тот запросик.
Теперь всего лишь надо, чтобы последнее слово (разделитель пробел) являлось числом. Вот смотри:
-------------------- |
|||
|
||||
| Garmahis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: нет Всего: 4 |
Большое спасибо!
Возможные значения текста до номера практически любой текст максимум из 2-3 слов. Номер может быть двух видов. просто число. и число и в скобках другое число. По какому сортировать тут всё равно. А можно сортировать от последнего пробела до "(" или до конца если скобки нет? Это сообщение отредактировал(а) Garmahis - 11.5.2006, 08:24 |
|||
|
||||
| Grig |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: 4 Всего: 16 |
Как я понял таблица состоит из таких значений
А ЗБ № 1 ЗБ № 10 dsf sdfs dsfsd fsd sdsd 222 ffgf hgh gh 22(345) Следующий запрос игнорирует число, которое в скобка (если такое вообще присутствует) и сортирует значения:
Притом количество слов до числа значения не имеет. Добавлено @ 09:59 А вот этот запрос сортирует по тому, что находится в скобках, игнорируя то число, которое находится вне скобок:
Я протестировал, работает. Главное не шутковать с пробелами в записях, например за корректную сортировку такой вот записи:
я лично не отвечаю. Удачи! Это сообщение отредактировал(а) Grig - 11.5.2006, 10:00 -------------------- |
||||||
|
|||||||
| Grig |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: 4 Всего: 16 |
Ага, блин!!!!
Еще один баг обнаружился: если само слово содержит скобки, то для сортировки это может плохо кончится. Например: ЗБ № (ПОКРЫШКА) черно-зеленая 348 вывалит тебе ошибку конвертации. Надеюсь, у тебя таких записей нет? Это сообщение отредактировал(а) Grig - 11.5.2006, 10:06 -------------------- |
|||
|
||||
| Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 2 Всего: 15 |
Ужасть, лучше уж тогда номер держать в другом поле, а на клиента выводить селектом со сцеплением:
имхо. -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
| Garmahis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: нет Всего: 4 |
Всем большое спасибо!
|
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
А не лучше ли таблицы сделать по человечески? Путём вынесения критерия для сортировки в отдельное поле?
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Garmahis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: нет Всего: 4 |
Я так и сделал
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |