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

Сортировка колонок в DBGrid по щелчку мыши

28.08.2012, 15:08. Показов 10931. Ответов 35
Метки нет (Все метки)

Подскажте пожалуйста, как сделать сортировку колонки в DBGrid по щелчку на шапке, т.е один раз щелкнул список от сортировался по алфавиту, потом второй раз щелкнул и список от сортировался в обратном порядке? Использую компоненты IBQuery + IBDatabase.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.08.2012, 15:08
Ответы с готовыми решениями:

По щелчку левой кнопки мыши должен меняться цвет формы, а по щелчку правой кнопки мыши – восстанавливаться предыдущий
Добрый день) Пишу одну программку, которая позволяла бы при перемещении курсора мыши менять его форму, в зависимости от четверти экрана,...

Сортировка в MSFlexGrid по щелчку мыши над заголовком колонки
Подскажите, пожалуйста, как в MSFlexGrid сделать сортировку по тому столбцу, над заголовком которого пользователь сделал двойной щелчок...

Линия по щелчку мыши
Здравствуйте! У меня на сцене нарисованы точки, как сделать чтобы рисовалась линия соединяющая точки? Понятно что методами mousePressEvent...

35
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.08.2012, 17:42
NachMed, а у Вас есть такая таблица в наличии?

Цитата Сообщение от NachMed Посмотреть сообщение
ow_firstname
0
1 / 1 / 0
Регистрация: 17.07.2012
Сообщений: 31
28.08.2012, 17:44  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
NachMed, а у Вас есть такая таблица в наличии?
Есть, я ее в sql запросе выбрал, и в DBGrid она отображается хорошо, вот только может я что то путаю таблицу со столбцом? Если путаю, тогда как посмотреть таблицу? Но мне кажется я правильно пишу столбец.
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.08.2012, 17:51
NachMed, ну вот чисто интуитивно
Цитата Сообщение от NachMed Посмотреть сообщение
ow_firstname
больше смахивает как раз-таки на название стоблца



Цитата Сообщение от NachMed Посмотреть сообщение
Если путаю, тогда как посмотреть таблицу?
По памяти как-то так:

C++
1
IBDataBase->GetTableNames(ListBox1->Items, 0); //список таблиц
0
1 / 1 / 0
Регистрация: 17.07.2012
Сообщений: 31
28.08.2012, 17:51  [ТС]
Вот SQL запрос в IBQuery:
SQL
1
2
3
4
5
6
7
8
9
10
11
SELECT 
OWNERPHOTOS.OW_ID, 
OWNER.OW_FIRSTNAME, 
OWNER.OW_MIDDLENAME,
OWNER.OW_LASTNAME, 
OWNER.OW_LASTNAME, 
OWNERPHOTOS.OW_PHOTO, 
JOBDEGREE.JD_FULLNAME
FROM JOBDEGREE
INNER JOIN OWNER ON (JOBDEGREE.JD_ID=OWNER.OW_JD_ID)
INNER JOIN OWNERPHOTOS ON (OWNER.OW_ID=OWNERPHOTOS.OW_ID)
В DBGrid все хорошо отображается
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
28.08.2012, 17:53
Цитата Сообщение от NachMed Посмотреть сообщение
Скриншот
Ошибка со скриншота говорит о том, что по ходу не видит таблицу с таким названием ты как базу подключал?

И каким билдером пользуешься?
0
1 / 1 / 0
Регистрация: 17.07.2012
Сообщений: 31
28.08.2012, 19:13  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Ошибка со скриншота говорит о том, что по ходу не видит таблицу с таким названием ты как базу подключал?

И каким билдером пользуешься?
c++ Builder 6. Базу подключал через IBDatabase + IBQuery + IBTransaction, в IBDatabase указал путь до базы на диске, подключается хорошо без ошибок, база сделана в FireBird

Добавлено через 2 минуты
Я гений!!! Вот так решил проблему:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if(IBQuery1->Active)
 {
   IBQuery1->Close();
   IBQuery1->SQL->Clear();
   if(dfer)
   {
    IBQuery1->SQL->Text = "Select *from owner order by " + Column->FieldName + "ow_firstname";
    dfer = false;
   }
   else
   {
    IBQuery1->SQL->Text = "Select *from owner order by " + Column->FieldName + "ow_firstname";
    dfer = true;
   }
   IBQuery1->Open();
   }
Где owner название таблицы а ow_firstname название столбца, не знаю для чего были DESC и ASC

Добавлено через 6 минут
Вот проблема только, когда нажимаю сортировку сортировка работает в одном направлении а обратно не работает стоит на месте, и когда нажал на сортировку почему то появляются все столбы в DBGride которые я даже не указывал в SQL запросе

Добавлено через 31 минуту
Короче хрен его знает, допустим решу эту проблему хотя наврятли, тут еще одна проблема Как сортировку делать для каждого столбца, на каждый столбец событие нельзя прописать

Поторопился я радоваться, буду очень признателен если поможете отчаявшемуся...
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
28.08.2012, 23:20
Цитата Сообщение от NachMed Посмотреть сообщение
Вот проблема только, когда нажимаю сортировку сортировка работает в одном направлении а обратно не работает стоит на месте
Вот для этого там и нужны были DESC и ASC

Цитата Сообщение от NachMed Посмотреть сообщение
и когда нажал на сортировку почему то появляются все столбы в DBGride которые я даже не указывал в SQL запросе
Понятное дело запрос сделан таким образом чтобы показывало все столбцы

Добавлено через 1 минуту
Цитата Сообщение от NachMed Посмотреть сообщение
Где owner название таблицы а ow_firstname название столбца
Я так и думал что-то ты там намутил с названиями таблиц и столбцов
0
1 / 1 / 0
Регистрация: 17.07.2012
Сообщений: 31
29.08.2012, 07:12  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Вот для этого там и нужны были DESC и ASC


Понятное дело запрос сделан таким образом чтобы показывало все столбцы

Добавлено через 1 минуту

Я так и думал что-то ты там намутил с названиями таблиц и столбцов
1. Да но куда их дописать, если на их место приходится писать имя столбца?
2. А как тогда сделать запрос чтобы все столбцы не появлялись?
3. А там по другому я не смог выкрутиться, owner я правильно написал имя таблицы, но в этой таблице содержится нужный столбец ow_firstname который я не знал куда записать.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
29.08.2012, 09:12
Цитата Сообщение от NachMed Посмотреть сообщение
1. Да но куда их дописать, если на их место приходится писать имя столбца?
Дописать можно в конец

Цитата Сообщение от NachMed Посмотреть сообщение
2. А как тогда сделать запрос чтобы все столбцы не появлялись?
Перечислить конкретные поля через запятую в запросе




Цитата Сообщение от NachMed Посмотреть сообщение
3. А там по другому я не смог выкрутиться, owner я правильно написал имя таблицы, но в этой таблице содержится нужный столбец ow_firstname который я не знал куда записать.
Ну а сейчас знаешь?
0
1 / 1 / 0
Регистрация: 17.07.2012
Сообщений: 31
29.08.2012, 14:51  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Дописать можно в конец

Перечислить конкретные поля через запятую в запросе

Ну а сейчас знаешь?
1. В конец надо попробовать, хорошая идея
2. Я так и делал, показывал же запрос SQL, конкретные поля через запятую перечислял там, но как в сортировке их перечислить, я не знаю правильный синтаксис подскажи
3. Я же показывал код, там в конце я вместо DESC прописал столбец, работает но коряво очень.
0
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
07.03.2013, 15:55
Sasha, а что нужно сделать что бы IBQuery1 активировался? А то пока делал у меня его не было на форме, ща кинул указал DataSource? но от этого при работе он не активируется, а при принудительной попытке
C++
1
IBQuery1->Active=true
вылетает ошибка DataBase not asignet...

Добавлено через 1 минуту
Ну или что в DataBase прописать?)

Добавлено через 14 минут
И вопрос можно ли реализовать через Query?
0
0 / 0 / 0
Регистрация: 17.08.2009
Сообщений: 161
04.04.2013, 11:30
в DBGrid можно как-то на названии столбца забацать рисунок, чтоб стрелка была, треугольного вида, для удобства сортировки)?
0
0 / 0 / 0
Регистрация: 16.09.2018
Сообщений: 72
16.06.2019, 18:08
Коллеги, если есть тут кто - помогите советом пожалуйста - нужна сортировка, но попроще - не по клику, а постоянная, по определенной колонке (в органайзере "время задания"). Если уж точнее - то (упрощаю) есть две кнопки, отлично работают - одна показывает задания на текущий день, нужна фиксированная сортировка по колонке "время", а другая кнопка показывает за все дни - тут нужна фиксированная сортировка по колонке "дата" и по колонке "время"
0
0 / 0 / 0
Регистрация: 16.09.2018
Сообщений: 72
17.06.2019, 17:41
Дополню вопрос - хочу сделать это по запросу с соритровкой - select * where * order by. Суть понимаю, но что то косячу с синтаксисом - у меня 1 таблица Jobs, 4 колонки - Date, Time, Job, Status. Мне нужно выборка всех 4 колонок с сортировкой по Times.
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
18.06.2019, 00:51
По щелчку на заголовке колонки
C++
1
2
3
4
5
6
7
void __fastcall TfMain::dbgRegTitleClick(TXColumn *Column)
{
    if ((tMain->Sort.Pos(Column->FieldName) > 0) && (DM->tMain->Sort.Pos("ASC") > 0)) //tMain - TADOTable, можно заменить на TADOQuery, просто мне такое наследство досталось
     tMain->Sort = Column->FieldName + " DESC";//сортировка по убыванию
   else
     tMain->Sort = Column->FieldName + " ASC";//по возрастанию
}
Жесткая сортировка по колонкам
C++
1
tMain->Sort = "Колонка1 DESC, Колонка2 ASC";//1-я по убыванию, 2-я по возрастанию
Добавлено через 1 минуту
Цитата Сообщение от Ashley33 Посмотреть сообщение
select * where * order by
Что это?
T-SQL
1
Select * From Jobs Order by Times
1
0 / 0 / 0
Регистрация: 16.09.2018
Сообщений: 72
18.06.2019, 07:30
Цитата Сообщение от TrollHammer Посмотреть сообщение
Жесткая сортировка по колонкам
ага, вот за это спасибо, как раз искал возрастание/убывание.
Но я делаю именно в виде запроса
Цитата Сообщение от TrollHammer Посмотреть сообщение
Select * From Jobs Order by Times
и именно так и писал (оно же интуитивно), а не работало... Сейчас с телефона, не могу попробовать, после обеда обязательно...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2019, 07:30

Заливка по щелчку мыши
Делаю простой пеинт. Создал класс наследник QWidget, в нем переопределил mouseeventы. Хочу сделать заливку по щелчку кнопки мыши, то есть в...

Закрыть редактирование по щелчку мыши
Как закрыть редактирование документа по двойному щелчку мыши в документе? А открывать на редактирование только по нажатию кнопку.

Нарисовать квадрат по щелчку мыши
Ситуация следующая Имеется графический редактор с функциями которые не так уж и важны но вот что главное В нем имеется функция...

Выделить PictureBox по щелчку мыши
Игра в дурака: есть набор карт динамические picturebox и на форме по щелчку на карте она должна выделиться. Как это сделать? int k =...

Пункт меню по щелчку мыши
Пишу будильник. Мне необходимо, чтобы по щелчку на кнопку на панели появлялось два поля (имя, время и кнопка выключения). Причем, при...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1) Сложность: Medium Источник: LeetCode 380 Задача Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли. Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack Сложность: Medium Источник: LeetCode 155 Задача: Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1). Методы:
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru