Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 72

Сортировка DBGrid (компоненты InterBase) при клике на заголовок столбца

21.01.2014, 08:34. Показов 3964. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем! У меня стоит задача, чтоб по клику на заголовок столбца DBGrid он сортировался. На форуме нашел следующий код:
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::DBGrid1TitleClick(TColumn *Column)
{
    if (ADOQuery1->Active)
        if ((ADOQuery1->Sort.Pos(Column->FieldName) > 0) && (ADOQuery1->Sort.Pos("ASC") > 0))
            {ADOQuery1->Sort = Column->FieldName + " DESC";}
        else
            {ADOQuery1->Sort = Column->FieldName + " ASC";}
}
Но я использую компоненты IBDataSet, IBDataBase, IBTransaction, DataSource. Как мне это переиначить этот код?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.01.2014, 08:34
Ответы с готовыми решениями:

Сортировка при клике на заголовок в DBgrid
Всем Привет! Имеется программа работающая с бд Access. В DBgrid сделал фильтрацию при нажатии на заголовок столбца. Для этого в...

Сортировка при клике на заголовке столбца ListView
Всем вечер добрый. Не подскажите как провести "Сортировку при клике на заголовке столбца ListView". Имеется таблица из 5 столбцов....

Сортировка listView при клике на заголовок столбца
Как сделать чтоб при клике по колонке в listView(View=Details) происходила сортировка по этой колонке, как в проводнике, если вид...

7
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.01.2014, 02:28
Как вариант вижу такой отлавливай при нажатии в верху на колонку, название поля и потом это название подставляй в запрос и сортируй через запрос
1
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 72
22.01.2014, 13:49  [ТС]
Сделал так, в принципе работает, что скажете?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm2::DBGrid1TitleClick(TColumn *Column)
{
if (Column->FieldName==Edit11->Text) counter++;
else
{counter=0; counter++;}
Edit11->Clear();
Edit11->Text=Column->FieldName;
IBDataSet1->Active=false;
if (counter%2!=0)
IBDataSet1->SelectSQL->Text="select * from klient order by "+Edit11->Text;
else
IBDataSet1->SelectSQL->Text="select * from klient order by "+Edit11->Text+" desc";
IBDataSet1->Active=true;
}
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.01.2014, 15:37
Цитата Сообщение от BIS-10-2 Посмотреть сообщение
if (Column->FieldName==Edit11->Text)
А тебе обязательно сверять имя поля с текстом Edit11->Text
1
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 72
23.01.2014, 11:02  [ТС]
для случая если он кликает на другой столбец, чтоб он его сначала по повозрастанию, а затем decs
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
23.01.2014, 12:37
Цитата Сообщение от BIS-10-2 Посмотреть сообщение
для случая если он кликает на другой столбец, чтоб он его сначала по повозрастанию, а затем decs
Я думаю для этих целей не обязательно держать отдельный компонент на форме. Можно просто объявить глобально переменную типа AnsiString и по ней сверять имя поля
1
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 72
24.01.2014, 07:48  [ТС]
При попытке зайти на вкладку "клиенты" выходит ошибка: Access violation at address 0046F55A in module 'Project2.exe'. Read of address00000374. И в messages два предупреждения:
[ILINK32 Warning] Warning: Public symbol '_Form2' defined in both module F:\4 KURS\C++\FIREBIRD\ПРОГРАММЫ\ОЦЕНКА(1)\RE LEASE\UNIT2.OBJ and F:\4 KURS\C++\FIREBIRD\ПРОГРАММЫ\ОЦЕНКА(1)\RE LEASE\UNIT1.OBJ
[ILINK32 Warning] Warning: Public symbol '_Form3' defined in both module F:\4 KURS\C++\FIREBIRD\ПРОГРАММЫ\ОЦЕНКА(1)\RE LEASE\UNIT2.OBJ and F:\4 KURS\C++\FIREBIRD\ПРОГРАММЫ\ОЦЕНКА(1)\RE LEASE\UNIT3.OBJ
Прошу, помогите!
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
24.01.2014, 10:15
Где-то что-то глобально объявлено
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.01.2014, 10:15
Помогаю со студенческими работами здесь

Сортировка в DbGrid по клику на заголовок столбца
Здравствуйте! Подскажите пожалуйста можно по колонкам сортировать в DBgrid, (т.е если нажать DBGrid по названию колонки "Фамилия"...

DBGrid сортировка при нажатии на заголовок
Всем привет! DBGrid стандартный в Lazarus 1.2.6. Нужно осуществлять сортировку при нажатии на заголовок столбца. Первое, не...

Сортировка по нажатию на заголовок столбца
как реализовать сортировку по нажатию на заголовок столбца, в свойствах включила сортировку

Jtable, сортировка по нажатию на заголовок столбца
могу ли я нажать на название столбика и он будет каждый раз отсортировывать?

При создании формы не видит компоненты InterBase
Здравствуйте! Есть основная форма MainForm есть DataModul (DM), эти компоненты создаются при запуске программы. Есть вспомогательная форма...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru