Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2011, 16:42   #1
Denis Black
 
Регистрация: 25.05.2011
Сообщений: 8
Печаль Авто сортировка строк по нажатию

Добрый день гуру программисты помогите разобраться в одной проблеме . Я написал некую прогу БД с использованием Client Data Set в ней следующие компоненты:

1. TClientDataSet
2. TDataSource
3. TDBGrid
4. TDBNavigator

Так ыот все вроде ок оснавнвя функция работает НО вот есть одна проблема когда загружается база и отображается в BDGrid то она не по алфавиту а в разброс например: ljk;yj ,snm 1/2/3/4 а там 4/1/2/3 и такая жк ситуация с буквами . Так вот вопрос в том как сделать что бы происходила сортировка по убыванию или по возрастанию ?

Вот нашел статью http://www.sources.ru/delphi/db/sort...mn_click.shtml так все понятно кроме выделенной строки ниже :
Куда эту строку писать ?

На форме расположены TQuery, TDatasource и TDbGrid связанные вместе.

QuerySQL, это глобальная строка, которая содержит SQL-выражение.

begin
QuerySQL := 'SELECT * FROM Customer.DB';
Query1.SQL.Add(QuerySQL);
Query1.Open;
end;


В DBGrid в событии OnTitleClick, достаточно добавить ORDER-BY к sql-строке и обновить запрос.

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
with Query1 do
begin
DisableControls;
Close;
SQL.Clear;
SQL.Add(QuerySQL);
SQL.Add('ORDER BY ' + Column.FieldName);
Open;
// Восстанавливаем настройки заголовка, иначе всё станет синим
DBGrid1.Columns.RestoreDefaults;
Column.Title.Font.Color := clBlue;
EnableControls;
end;
end;
Denis Black вне форума Ответить с цитированием
Старый 07.06.2011, 18:02   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

если возвращаемый запросом НД сравнительно небольшой, я бы не стал заморачиваться с сортировкой на стороне сервера.

посуольку используется CDS, достаточно создать индексы (по возр. и по убыв.) по полям, требующим сортировки, и подключать нужные индексы к CDS в обработчике клика колонки
mss вне форума Ответить с цитированием
Старый 10.03.2012, 01:45   #3
Prince_Zmei
Новичок
Джуниор
 
Аватар для Prince_Zmei
 
Регистрация: 02.02.2007
Сообщений: 2
Вопрос

Использую:
TClientDataset
DBGridEh
как можно о существовать связь сортировки в 2 колонках по выбору(без Sql)?

Последний раз редактировалось Prince_Zmei; 10.03.2012 в 01:49.
Prince_Zmei вне форума Ответить с цитированием
Старый 10.03.2012, 14:42   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Писали же выше
Цитата:
достаточно создать индексы (по возр. и по убыв.) по полям, требующим сортировки, и подключать нужные индексы к CDS в обработчике клика колонки
В DBGridEh установить свойство TitleButton:= True;
Для пущего эффекта установить в OptionEh свойство AutoSortMarking:= True;
И обрабатывать событие либо OnSortMarkingChanged, или OnTitleBtnClick
Что-то типа
Код:
procedure TForm1.DBGridEh1TitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh);
begin
ClientDataSet1.IndexName:= Column.FieldName;
end;
_SERGEYX_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авто нумерация строк в BDGrid Denis Black БД в Delphi 6 25.05.2011 18:38
Сортировка строк HixoH Общие вопросы C/C++ 0 27.04.2010 15:40
Сортировка по нажатию кнопки Nate-p Microsoft Office Access 2 25.06.2008 08:35
Сортировка строк sheva75 Microsoft Office Excel 3 06.02.2008 05:00