Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сортировка в dbgrideh по алфавиту.


Страницы:   1 2

Андрей Ал. ©   (2009-03-25 11:16:00) 

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


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


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


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


KilkennyCat   (2009-03-27 19:48:00) [2]

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


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


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


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


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

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


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


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


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


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

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


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

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

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


clickmaker   (2009-03-27 14:53:00) [8]

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

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


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

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

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


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


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


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


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

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


clickmaker   (2009-03-27 13:33:00) [12]

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

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


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


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



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


Cказано же:


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


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


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

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


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


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


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

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


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

О чём это вы тут? Какие индексы??? 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


Palladin   (2009-03-27 11:36:00) [17]

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


MsGuns   (2009-03-27 10:58:00) [18]

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


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

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


MsGuns   (2009-03-25 12:31:00) [20]

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо