![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сортировка в dbgrideh по алфавиту.
Андрей Ал. © (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 индекс нужно создать в коде)