Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/424: Рейтинг темы: голосов - 424, средняя оценка - 4.82
 Аватар для Dam
6 / 6 / 1
Регистрация: 25.01.2008
Сообщений: 13

Сортировка в DBGrid

16.06.2008, 19:15. Показов 94058. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возникла проблема: ОЧЕНЬ нужно чтобы при нажатии на кнопку,
в компоненте DBGrid происходила сортировка содержимого по алфавиту.
Пожалуйста напишите как (если можно с примером кода).:huh:
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2008, 19:15
Ответы с готовыми решениями:

Сортировка в DBGRID
Добрый день! Есть на форме DBgrid с 2 полями: 1.Локация 2. Дата Как сделать сортировку по полю дата, что бы при клике на поле дата в...

Сортировка в DBGrid
Вот код: procedure TForm1.N8Click(Sender: TObject); begin ClientDataSet1.IndexFieldNames:='Фамилия'; end; Подскажите как...

Сортировка в DBGrid
Здравствуйте! Подскажите, как можно провести сортировку в колонках DBGrid, но с помощью индексов, так как использую компонент Table, с SQL...

47
 Аватар для MegaPiha
23 / 23 / 8
Регистрация: 10.03.2008
Сообщений: 125
16.06.2008, 21:20
Лучший ответ Сообщение было отмечено как решение

Решение

Если DBGrid к Query присоединен то так:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.FormCreate(Sender: TObject);
Var path:string;
begin
  GetDir(0,path);
  ADOConnection1.Close;
  ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+path+'\DB.mdb;Persist Security Info=False';
  ADOConnection1.Connected:=true;
  QSQL:='SELECT * from main ';
  With ADOQuery2 do begin
    Close;
    SQL.Clear;
    SQL.Add(QSQL);
    Open;
  end;
  ADOTable1.Open;
end;
В событии DBGrid OnTitleClick прописываем.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
Var f:string;
begin
  f:= Column.FieldName;//без этой переменной у меня работать не хочет
  with ADOQuery2 do
  begin
     Close;
     SQL.Clear;
     SQL.Add(QSQL);
     SQL.Add('ORDER BY '+f);
     Open;
  end;
end;
Если Table к DBGrid подключен то в OnTitleClick пишем.
Code
1
2
3
4
5
6
procedure TForm1.DBGrid2TitleClick(Column: TColumn);
Var f:string;
begin
    f:= Column.FieldName;
    ADOTable1.Sort:=f;
end;
Исходник прилагаю.
Вложения
Тип файла: zip DBGrid sort.zip (20.6 Кб, 2427 просмотров)
10
 Аватар для Dam
6 / 6 / 1
Регистрация: 25.01.2008
Сообщений: 13
16.06.2008, 21:47  [ТС]
Благодарю
0
 Аватар для Dam
6 / 6 / 1
Регистрация: 25.01.2008
Сообщений: 13
05.08.2008, 21:15  [ТС]
а если используется не ADOTable а TTable
0
0 / 0 / 0
Регистрация: 13.03.2009
Сообщений: 27
14.03.2009, 09:51
Добавлено через 1 минуту 35 секунд
Цитата Сообщение от MegaPiha Посмотреть сообщение

Если Table к DBGrid подключен то в OnTitleClick пишем.
Code
1
2
3
4
5
6
procedure TForm1.DBGrid2TitleClick(Column: TColumn);
Var f:string;
begin
    f:= Column.FieldName;
    ADOTable1.Sort:=f;
end;
а как поменять направление сортировки?
то есть что б первым кликом по возрастанию, а вторым по убыванию?
0
3 / 3 / 0
Регистрация: 27.05.2009
Сообщений: 42
27.05.2009, 16:50
Цитата Сообщение от Dam Посмотреть сообщение
а если используется не ADOTable а TTable
у меня ТТабле прикреплен к ДБГрид и этот код не работает, подскажите как сделать плиз
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
27.05.2009, 17:11
martanton, надо указывать так:
ADOTable1.Sort:=f + ' ASC'; (или DESC)
ну а как уже их менять - дело за вами...

Screamo, для TTable сортировка организуется с помощью индексов
0
3 / 3 / 0
Регистрация: 27.05.2009
Сообщений: 42
27.05.2009, 17:18
Delphi
1
2
3
4
procedure TForm1.Button9Click(Sender: TObject);
begin
Table1.IndexFieldNames:='FIO_st';
end;
так? выдает ошибку - No Index for fields 'FIO_st'
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
27.05.2009, 17:21
Screamo, а вы его сначала добавьте, чтобы потом использовать
0
3 / 3 / 0
Регистрация: 27.05.2009
Сообщений: 42
28.05.2009, 21:23
есть вторичный индекс у этой таблицы

Добавлено через 4 минуты 29 секунд
щас попытался новый вторичный индекс создать у этой таблицы, пишет An index of this type already exisist

Добавлено через 5 часов 29 минут 32 секунды
все - разобрался)

Добавлено через 22 часа 13 минут 32 секунды
как сортировать не в алфавитном порядке а наоборот или же не с меньшего числа а с большего?
Delphi
1
Table2.IndexFieldNames:='Summa';
в столце сумма числа сортируются от меньшего к большему а как сделать наоборот?)
0
0 / 0 / 0
Регистрация: 15.06.2009
Сообщений: 25
16.06.2009, 11:56
table.sort
0
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 40
07.12.2009, 15:01
вот создал я вторичный индекс для поля таблицы ttable.он при нажатии на кнопку отсортировал...затем я хочу изменить таблицу,но он мне выдает 'index is read only'.как сделать так чтобы он сортировал после каждого изменения таблицы?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
08.12.2009, 12:27
Agentum, просто выводи в дбгрид результат запроса с нужной сортировкой, после обновления отображения будешь получать снова отсортированную таблицу
1
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 40
08.12.2009, 17:15
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
Agentum, просто выводи в дбгрид результат запроса с нужной сортировкой, после обновления отображения будешь получать снова отсортированную таблицу
не сочти меня за тупого,но ничего не понял((((поясни на коде если можешь...
0
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 40
09.12.2009, 15:45
Lord_Voodoo, поясни пжл
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
09.12.2009, 15:49
Agentum, да что тут сложного в DataSet - нужного DataSource, который связан с дбгридом, записываешь имя запроса, а в самом запросе пишешь что-то вроде такого:
SQL
1
SELECT * FROM TABLE ... ORDER BY KEY
и у тебя всегда будет сортировка по полю key, asc или desc определяют направление сортировки
1
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 40
09.12.2009, 16:00
Lord_Voodoo, то есть мне бросать на форму компонент query?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
09.12.2009, 16:14
Agentum, это уже на ваше усмотрение, можно кидать. можно руками создать
1
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 40
09.12.2009, 16:21
Lord_Voodoo, я просто первый раз работаю.Вот такое должно быть?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm2.Button4Click(Sender: TObject);
begin
with form2.Query1 do begin
Close; 
SQL.Clear; 
SQL.Add('SELECT Themes');
SQL.Add('FROM "tab.db"');
SQL.Add('ORDER BY Themes');
Open; 
end;
DataSource1.DataSet:=query1;
end;
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
09.12.2009, 16:23
Agentum, ну что-то типа того
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.12.2009, 16:23
Помогаю со студенческими работами здесь

Сортировка DBGrid
Есть Грид в котором есть процедура DBGridTitleClick и эта процедура выполняет сортировку по колонке: procedure...

Сортировка DBGrid
Доброго времени суток! Надо сделать так что при нажатии кнопки в DBGrid происходила сортировка записей по алфавиту. Использую TTable. База...

Сортировка DBGrid
Здраствуйте. Вопрос в следующем: в дбгриде есть 2 столбца "имя" и "цена", по щелчку на название столбика должна происходить сортировка,...

Сортировка dbgrid
Есть сортировка по убыванию, но как мне соединить ещё и по возрастанию, чтобы при нажатии ещё раз на заголовок поля, выводила по...

Сортировка DBGrid
Привет. Собираюсь сделать пару разных сортировок для DBGrid. Буду писать вопросы в этой теме. Сразу вопрос: я хочу сделать, чтобы при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru