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

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

Как изменить порядок отображения записей в DBGRID


AFROLOV ©   (2002-07-16 15:22:00) 

Привет всем.
Задача такая: Как самому определять порядок следования записей при их отображении в DBGRID? Например если не устраивает обычная сортировка и требуется упорядочивать записи по своему усмотрению?


Desdechado   (2002-07-17 15:00:00) [1]

а можно использовать хранимые процедуры для таких вывертов ...


Diana   (2002-07-17 14:35:00) [2]

1. Можно сделать ORDER BY в запросе
2. Если есть возможность, воспользоваться Grid-ом например из библиотеки DeveloperExpress, там много полезного реализовано


Anatoly Podgoretsky   (2002-07-17 09:23:00) [3]

AFROLOV © (16.07.02 16:26)
Жалко что в вопросе не фигурирует база, но подобное возможно только для некоторых десктопных баз, путем физического переписываня таблий и отказ от индексов.
Еще один вариант, отказ от dbGrid данные закачивать в StringGrid или другие подобные органы


Sergey13   (2002-07-17 09:03:00) [4]

2sniknik © (16.07.02 18:30)
Вопрос был про записи, а не про поля.
2AFROLOV © (16.07.02 16:26)
Если изменение порядка записей подчиняется какому то хитрому, но правилу, то можно попытаться сделать это программно (либо при составлении запроса либо как написал AlexGreG © (16.07.02 15:34)). Если поменять надо просто так, по прихоти, то только ручками по схеме того же AlexGreG © (16.07.02 15:34). Кстати, а что за задача такая, где нужно записи менять местами. Может если напишешь для чего нужно - и ответить будет проще.


sniknik   (2002-07-16 18:30:00) [5]

А как ты получаеш набор? если через Query компонент то достаточно в select поля в нужном порядке прописать.
ADODataSet1.CommandText:= "SELECT field2, field3, field1 FROM MyTable";
ADODataSet1.Open;
если из таблици то сам грид переопредели, двойной клик на гриде открывает редактор отображаемых полей. тасуй их там как хочеш.


AFROLOV   (2002-07-16 16:26:00) [6]

А как в DataSet изменить порядок следования записей? Например поменять 2 из местами.


Mike_Goblin   (2002-07-16 15:48:00) [7]

>Т.е если изменить порядок следования записей в DataSource порядок их отображения так же изменится?

В DataSet - если в нем меняешь порядок - меняется в DBGRID


AlexGreG   (2002-07-16 15:45:00) [8]

DataSource - это объединяющее звено, необходимое для того, чтобы из набора данных данные отображались в сетке (dbgrid)


AFROLOV   (2002-07-16 15:41:00) [9]

Т.е если изменить порядок следования записей в DataSource порядок их отображения так же изменится?


AlexGreG   (2002-07-16 15:34:00) [10]

варианты

1)Можно использовать RxMemoryTable, например..., или подобную компоненту. При открытии (open) набора данных (или рефреше (refresh)) ручками вставляем (insert), где нужно, или добавляем (append) записи. Чтобы определить место в таблице, куда нужно вставить запись (согласно твоему критерию), используй метод Locate, который есть у наборов данных.

2)Написать свою компоненту-"набор данных", которая будет удовлетворять твоим требованиям (или требованиям твоих пользователей)

В любом случае DBGrid работает с набором данных через DataSource


Наверх

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