Текущий архив: 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