Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/55: Рейтинг темы: голосов - 55, средняя оценка - 4.98
52 / 60 / 24
Регистрация: 03.09.2010
Сообщений: 1,242
1

ClientDataSet сортировка

18.08.2011, 14:26. Показов 10656. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, у меня есть ClientDataSet, DbGrid, DataSource. Данные отображаются в Гриде и сортируются по нажатию на Title таким вот образом:

Pascal
1
2
3
4
procedure TfMain.DBGrid1TitleClick(Column: TColumn);
begin
  ClientDataSet1.IndexFieldNames:=Column.FieldName;
end;
Но сортирует оно по возрастанию, а мне надо сделать чтобы при повторном нажатии на Title сортировало по убыванию или хотя бы программный код сортировки по убыванию в моем случае. Подскажите плз как это сделать, только без использования TMS Component, Ehlib и т.д. Буду очень благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.08.2011, 14:26
Ответы с готовыми решениями:

ClientDataSet
С чем связана ошибка "Access violation at address 509EDA07 in module 'dsnap180.bpl'. Read of...

XML и ClientDataSet
Обращаюсь к файлу xml по средством XMLTransformProvider1 -> ClientDataSet1 -> DataSource1 ->...

ClientDataSet и запросы
Я не стал подключать стороннюю базу данных, а создал таблицы сам в компоненте ClientDataSet в...

ClientDataSet - Дата и время
Привет! Делаю базу данных на Delphi 7 через ClientDataSet.FieldDefs и у меня возникла проблема с...

12
4 / 4 / 0
Регистрация: 18.08.2011
Сообщений: 39
18.08.2011, 14:40 2
Pascal
1
2
   Prior;
  end;{while FieldByName('X').AsInteger=X}
1
52 / 60 / 24
Регистрация: 03.09.2010
Сообщений: 1,242
18.08.2011, 14:42  [ТС] 3
извиняюсь, но я немного не понял данный код, prior - это переход предыдущую запись. Чесно сказать не разобрался, опишите если можно подетальнее
0
4 / 4 / 0
Регистрация: 18.08.2011
Сообщений: 39
18.08.2011, 14:53 4
Pascal
1
2
3
4
5
6
7
8
9
// последняя запись
  Prior; // возможно, уже пропустили
  while (FieldByName('X').AsInteger=X) and not(BOF) do
  begin
    
    Delete; // удалили сколько надо и сдвинулись
    Prior;
  end;
  Prior; // на следующей итерации - опять можем пропустить
0
52 / 60 / 24
Регистрация: 03.09.2010
Сообщений: 1,242
18.08.2011, 15:07  [ТС] 5
Чесно вообще непонятно причем это к сортировке. Сортировка насколько я знаю осуществляется с помощью индексных полей. У меня реализована по возрастанию, надо сделать аналогично только по убыванию
0
4 / 4 / 0
Регистрация: 18.08.2011
Сообщений: 39
18.08.2011, 15:12 6
Pascal
1
2
3
4
s_elect t1.id, t1.sum, t2.type_
f_rom t1, t2
w_here t1.id=t2.id and t2.type_= 0 (или 1)
order by t1.sum
Понятнее?
0
52 / 60 / 24
Регистрация: 03.09.2010
Сообщений: 1,242
18.08.2011, 15:25  [ТС] 7
Это sql запрос, у меня база в формате .cds. Могу скинуть проэкт чтобы было яснее что там происходит
Вложения
Тип файла: rar БД Планировщик заказов.rar (700.6 Кб, 190 просмотров)
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
18.08.2011, 15:49 8
TIndexDef.DescFields + F1
1
52 / 60 / 24
Регистрация: 03.09.2010
Сообщений: 1,242
18.08.2011, 15:56  [ТС] 9
Спасибо большое, как же все просто...
0
92 / 59 / 8
Регистрация: 09.11.2011
Сообщений: 443
23.03.2012, 11:17 10
Что нельзя было по-нормальному объяснить или код с результатом выложить?
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
23.03.2012, 12:54 11
Cheb, Нет нельзя. Вам подсказывают откуда взять знания. а вы сами берите. Мы уже эти знания получили.
Учитесь вы.
А ваше напишите код , а я вставлю в проект ничему вас не научит...
0
92 / 59 / 8
Регистрация: 09.11.2011
Сообщений: 443
23.03.2012, 13:25 12
Цитата Сообщение от rdama Посмотреть сообщение
А ваше напишите код , а я вставлю в проект
Я такое не говорил никогда, не в этом посте, ни в каком другом, А только вопрос задал..
Всегда стараюсь сделать сам, но тк неопытен нуждаюсь в подсказках, ведь форумы за тем и нужны ,что бы подсказывать друг другу.
А если кому-то трудно (подсказывать) так зачем ответ писать и заходить на форумы, раз уже "знания получили".

На форум заходят:
1) те кто хочет получить помощь, подсказки.
2) те у кого есть чем поделиться, есть желание, есть время.

Если желания помочь нет, что толку от вашего сообщения?

Цитата Сообщение от rdama Посмотреть сообщение
Учитесь вы
Я и учусь:

Delphi
1
2
3
4
5
6
7
8
9
10
var sort_typ:string;
 
///......
procedure TDBGrid.OnTitleClick(Column: TColumn);
begin
   if sort_typ = '' then sort_typ:=Column.FieldName
                       else sort_typ:='';
   form1.ClientDataSet.AddIndex(Column.FieldName + sort_typ, Column.FieldName,[ixCaseInsensitive], sort_typ, '' , 0);
   form1.ClientDataSet.IndexName := Column.FieldName + sort_typ ;
end;
вот для всех новичков , кто интересуется обратной сортировкой. Сортирует DBGrid по любой колонке, как в прямом, так и в обратном направлении.
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
23.03.2012, 14:05 13
Цитата Сообщение от Cheb Посмотреть сообщение
Что нельзя было по-нормальному объяснить или код с результатом выложить?
Ну так а это не о том что дайте готовый код?
А направление уже дали
Цитата Сообщение от MsGuns Посмотреть сообщение
TIndexDef.DescFields + F1
Нужно только понять как идти...
0
23.03.2012, 14:05
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.03.2012, 14:05
Помогаю со студенческими работами здесь

ClientDataSet цветные ячейки
Можно ли задавать цвет ячеек непосредственно в ClientDataSet, так, чтобы этот цвет потом принимали...

Soap-->clientdataset-->DBGrid
странно ведёт себя программа- пока есть едигственный обработчик нажатия на кнопке...

Вытащить данные из ClientDataSet
Загружаю XML в ClientDataSet всё хорошо. Потом хочу перетащить на постоянное хранение MYSql. Если в...

Загрузка CSV в ClientDataSet
Замучился с концепцией ClientDataSet. Суть простая - открыть CSV файл и прочитать его в...

Работа с ClientDataSet. Найти шарик..
Есть ClientDataSet есть записи с текстовыми полями: Нужно отобрать те записи, где...

ClientDataSet... Запрос на добавление... Ошибка
Доброго времени суток. Есть клиент – сервер, работающий с базой Access 2007. Связь через...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Как проверить, что файл НЕ существует с помощью Bash
bytestream 25.01.2025
В системном администрировании проверка существования файлов является фундаментальной операцией, особенно при написании скриптов на Bash. Правильная обработка ситуаций, когда файл отсутствует,. . .
Как проверить, что строка пустая, неопределена или null в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript разработчики регулярно сталкиваются с необходимостью проверки строковых значений на различные состояния. Валидация данных является критически важным. . .
Как проверить существование ключа в объекте или массиве в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript программисты постоянно сталкиваются с необходимостью работать с объектами и массивами. Эти структуры данных являются фундаментальными элементами языка и. . .
Как создать ArrayList из массива (array) в Java
bytestream 25.01.2025
При разработке программного обеспечения на языке Java программисты часто сталкиваются с необходимостью эффективного управления наборами данных. Массивы и ArrayList являются двумя фундаментальными. . .
Как сгенерировать случайные целые числа (int) в указанном диапазоне в Java
bytestream 25.01.2025
В программировании генерация случайных чисел является важнейшим инструментом для решения множества практических задач. От создания игровых механик до реализации алгоритмов машинного обучения, от. . .
Как сделать, чтобы grep выводил строки до и после найденной
hw_wired 25.01.2025
Утилита grep стала незаменимым инструментом для поиска и фильтрации информации в Unix-подобных операционных системах. Эта командная утилита позволяет осуществлять поиск строк, соответствующих. . .
Как клонировать определенную ветку в Git
bytestream 24.01.2025
Одной из ключевых функций Git является возможность клонирования веток, что позволяет создавать локальные копии удаленных репозиториев и работать с определенными версиями проекта. Этот механизм. . .
Как в цикле обойти строки DataFrame в Pandas Python
bytestream 24.01.2025
DataFrame представляет собой одну из основных структур данных в библиотеке Python Pandas, которая организует информацию в виде двумерной таблицы с строками и столбцами. Эта структура данных особенно. . .
Как получить имя текущей ветки в Git
bytestream 24.01.2025
При работе с Git часто возникает необходимость определить имя текущей ветки, в которой ведется разработка. Знание текущей ветки является критически важным аспектом для эффективного управления. . .
Как отсортировать массив объектов по значению поля объекта в JavaScript
bytestream 24.01.2025
При разработке веб-приложений на JavaScript разработчики часто сталкиваются с необходимостью работать с массивами объектов. Эти структуры данных представляют собой упорядоченные наборы элементов, где. . .
Ошибка "src refspec master does not match any" при пуше коммита в Git
bytestream 24.01.2025
При работе с системой контроля версий Git разработчики нередко сталкиваются с различными ошибками, одной из которых является сообщение "src refspec master does not match any". Эта ошибка возникает. . .
Как округлить не более двух цифр после запятой в JavaScript
bytestream 24.01.2025
При работе с числами в JavaScript разработчики часто сталкиваются с необходимостью округления десятичных значений до определенного количества знаков после запятой. Это особенно важно при работе с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru