C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Задание своего порядка сортировки в DBGrid
disaster
Отправлено: 09.02.2006, 20:16


Ученик-кочегар

Группа: Участник
Сообщений: 4



Всем привет!
У меня такой вопрос, как задать свой порядок сортировки в DBGrid.
То есть имеется текстовое поле Mounth (Месяц) и его допустимые значения январь,февраль, ... , декабрь
При отображении таблицы записи сортируются по алфавиту по этому полю, но это имеет вид:

август, (остальные поля)
апрель, (остальные поля)
декабрь, (остальные поля)
июль, (остальные поля)
июнь, (остальные поля)
май, (остальные поля)
март, (остальные поля)
ноябрь, (остальные поля)
октябрь, (остальные поля)
сентябрь, (остальные поля)
февраль, (остальные поля)
январь, (остальные поля)

А хочется сделать чтобы они сортировались по порядку следования месяцов в календаре. Как это сделать?
AVC
Отправлено: 10.02.2006, 09:11


Ветеран

Группа: Модератор
Сообщений: 1583



Добавить числовое поле и сортировать по нему. Поле не обязательно добавлять физически (но это зависит от СУБД, о которой автор вопроса скромно умолчал smile.gif )
Tseug
Отправлено: 12.02.2006, 17:22


Не зарегистрирован







Как это "Поле не обязательно добавлять физически"?
Например для ADO/Access.
olegenty
Отправлено: 13.02.2006, 07:04


Ветеран

Группа: Модератор
Сообщений: 2412



это значит, поле может быть Calculated на стороне клиента, может быть добавлено в результат запроса на стороне сервера, но в обоих случаях — отсутствовать в таблицах БД.
AVC
Отправлено: 13.02.2006, 10:07


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

Например для ADO/Access.

CODE

Select * From (
SELECT
 t1.*
,LCase(Mid([month],1,3)) AS m1
,Switch
 ([m1]="янв",1
 ,[m1]="фев",2
 ,[m1]="мар",3
 ,[m1]="апр",4
 ,[m1]="май",5
 ,[m1]="июн",6
 ,[m1]="июл",7
 ,[m1]="авг",8
 ,[m1]="сен",9
 ,[m1]="окт",10
 ,[m1]="ноя",11
 ,[m1]="дек",12
) AS monthNN
FROM t1
)
Order By (monthNN+0);

PS. Я бы хранил в таблице дату (или номер месяца) а название месяца достраивал бы при показе.

Вернуться в Работа с базами данных в C++Builder