Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.10;
Скачать: CL | DM;

Вниз

Сортировка в dbgrideh по алфавиту.   Найти похожие ветки 

 
Андрей Ал.   (2009-03-25 11:16) [0]

Как сортировать по алфавиту в dbgrideh без sql запроса.?


 
{RASkov} ©   (2009-03-25 11:36) [1]

В любом случае сортируешь датасет, а грид тут не причем, он только отобразит отсортировнный набор данных...


 
clickmaker ©   (2009-03-25 12:12) [2]

DataSet должен уметь индексы. TADODataSet, TClientDataSet, к примеру


 
MsGuns ©   (2009-03-25 12:31) [3]

Для ADO индексы не нужны - он их построит сам по необходимости (для CDS индекс нужно создать в коде)


 
Андрей Ал.   (2009-03-27 09:26) [4]

Индексы созданы.
Но если я сортирую через sql у меня почему то теряется струтура таблицы, тоесть при добавленни из дбгридех у меня добавляется не та сток которую я выбираю я первая запись в таблице


 
MsGuns ©   (2009-03-27 10:58) [5]

Сам то понял что сказал ?


 
Palladin ©   (2009-03-27 11:36) [6]

:)) вели и могучь руская язык


 
Труп Васи Доброго ©   (2009-03-27 11:54) [7]

О чём это вы тут? Какие индексы??? DbGridEh сам всё делать умеет, достаточно по заголовку колонки щёлкуть.
Сначала у нужной колонки в свойствах ставишь DBGridEh1.Columns[1].Title.TitleButton = true, чтобы заголовок нажимался как кнопка. При щелчке по ней он будет сортировать сначала по возрастанию, потом по убыванию (всё как в проводнике Windows). Если надо чтобы сортировка была автоматической при открытии датасета, то ставишь DbGridEh1.OptionsEh.dghAutoSortMarking = true, если нужна автосоритровка по нескольким полям, то там же DbGridEh1.OptionsEh.dghMultiSortMarking = true. Очерёдность сортировки задаётся в свойствах столбцов DBGridEh1.Columns[1].Title.SortIndex = 1 (сначала по этому столбцу), DBGridEh1.Columns[2].Title.SortIndex = 2 (потом по этому столбцу) и т.д.
Направлеие сортировки (возрастание/убывание) задаётся параметром DBGridEh1.Columns[1].Title.SortMarker = smDownEh (по убыванию).
ВАЖНО!!! Для выполнения сортировки необходимо чтобы в каталоге с исходниками находился нужный файл (в зависимости от используемой БД)
Engine            DataSet           FileName    

BDE               TQuery            EhLibBDE    
ADO               TADOQuery         EhLibADO    
ClientDataSet     TClientDataSet    EhLibCDS    
DBExpress         TSQLQuery         EhLibDBX
InterBase Express TIBQuery          EhLibIBX


 
Сергей М. ©   (2009-03-27 12:19) [8]


> DbGridEh сам всё делать умеет


Мож и умеет, если подцеплен к мизерному НД.

А вот как подцепят его к неиндексированному НД записей эдак на миллионов десяток, так он сразу и обделается)


 
Труп Васи Доброго ©   (2009-03-27 13:19) [9]

Это не программистское понятие "обделается". Он сам особо ничего не делает, он к исходному запросу автоматом добавляет ORDER BY, список выбранных тобой полей и Desc, если нужно, вот и всё. Сортировку делает сервак, а не DBGridEh. Так что если кто и обделается, то сервак, а не грид.
Та кчто под словами "сам умеет всё делать" я как раз и имел в виду, что раз уж человек юзает этот грид, то нафига руками запрос морочить, когда грид это сам делает.


 
Сергей М. ©   (2009-03-27 13:25) [10]


> Труп Васи Доброго ©   (27.03.09 13:19) [9]



> к исходному запросу


Cказано же:


> без sql запроса


Куда, спрашивается, грид должен впендюрить ORDER BY, если нет никаого запроса ?


 
clickmaker ©   (2009-03-27 13:33) [11]

> он к исходному запросу автоматом добавляет ORDER BY

это только если бдешный TQuery, потому что он по-другому не умеет.
для адо и клиентдатасета возможна локальная сортировка. Но там по-любому индексы, только создаются они "под ковром"


 
Труп Васи Доброго ©   (2009-03-27 14:18) [12]

Блин, эксперимент есть эксперимент. Создал таблицу с миллионом записей (varchar20). DBGridEh отсортировал этот набор за 4 секунды, что для не индексированного поля очень неплохо. База на FB2.1 WinXP на обычном компе Core2Duo с 1 Гб оперы + на нём в это время 2 юзера работали (1 локально и 1 в терминале).
Так что всё нормально работает.


 
Сергей М. ©   (2009-03-27 14:39) [13]


> Труп Васи Доброго ©   (27.03.09 14:18) [12]


Т.е. через 4 секунды ты успел побывать в конце НД ?


 
Труп Васи Доброго ©   (2009-03-27 14:51) [14]

> Т.е. через 4 секунды ты успел побывать в конце НД ?

Я где то сказал что был фетч за 4 секунды??? Сортировка была, а не фетч. Это что за идиотизм каждый раз фетчить весь НД на клиента??? Нажал сортировка и через 4 секунды "конец НД" оказался сверху, ещё раз нажал и сверху начало, смотри если нравится.
Ты скажи в каком обоснованом случае надо просматривать глазами подряд хотя бы 100 записей, тем более заявленые 10млн., если человек не извращенец? Для поиска есть запросы и фильтры, а если для поиска пользоваться только прокруткой, то тебе и сортировка не особо поможет.


 
clickmaker ©   (2009-03-27 14:53) [15]

> а если для поиска пользоваться только прокруткой, то тебе
> и сортировка не особо поможет

а может, у пользователя глаз, как у орла )


 
Труп Васи Доброго ©   (2009-03-27 15:09) [16]

> а может, у пользователя глаз, как у орла )

ага, и задница, как у бегемота, ибо просмотреть 10млн записей времени займёт до кровавых мозолей на жп.


 
MsGuns ©   (2009-03-27 15:17) [17]

Вася ты неправ :)


 
Сергей М. ©   (2009-03-27 15:35) [18]


> что за идиотизм каждый раз фетчить весь НД на клиента?


Зачем весь ?
Предположим, курсор НД - на серверной стороне..
Но и при этом условии перемещение в конец НД при таких объемах и при отсутствии подходящих индексов займет далеко не 4 сек


 
KilkennyCat ©   (2009-03-27 19:21) [19]

что такое фетчить ?


 
Сергей М. ©   (2009-03-27 19:43) [20]


> что такое фетчить ?


"Фетчить" означает грузить что-то откуда-то какой-то ненужной хренью, тратя при этом время, деньги и нервы)


 
KilkennyCat ©   (2009-03-27 19:48) [21]

То есть то, что я делаю целый день....:)
Спасибо!


 
Сергей М. ©   (2009-03-27 19:57) [22]


> то, что я делаю целый день


Если бы только ты)



Страницы: 1 вся ветка

Текущий архив: 2009.05.10;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.018 c
2-1238076122
DevilDevil
2009-03-26 17:02
2009.05.10
Глупый вопрос. Путь к bpl.


15-1236238528
ford
2009-03-05 10:35
2009.05.10
модераторам ветки


15-1235938698
TInt
2009-03-01 23:18
2009.05.10
Можно ли сделать чтоб класс менял размер массива не зная его типа


15-1236501951
тимохов-криптор
2009-03-08 11:45
2009.05.10
Веб-сервер на Linux


2-1238486856
Handle
2009-03-31 12:07
2009.05.10
проверка вхождения строки без учета регистра