Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

DBGRID - переиндексация набора данных   Найти похожие ветки 

 
VALUA   (2006-06-08 10:29) [0]

Господа , здравствуйте !
Вопрос - есть DBGRID , который связан с набором данных IBQUERY1(select * from FAIL order by Pole1, Pole2) .
В DBGRID отображаются поля Pole1, Pole2 , хотелось бы сделать клик на названии Pole2 и набор данных перестроился по полю  
Pole2 , клик на названии Pole1 и набор данных перестроился по полю Pole1 .
Как правильно сделать ?
Неужели каждый раз заново открывать набор , но с разный индексацией - IBQUERY1(select * from FAIL order by Pole2)
и т. д.
Спасибо .


 
ЮЮ ©   (2006-06-08 10:40) [1]


> Неужели каждый раз заново открывать набор , но с разный
> индексацией - IBQUERY1

Для IBQuery это вполне естественно.

Если же хочется "изгаляться" имено над клиентским НД, то нужны другие DataSet-ы:

TCustomADODataSet.Sort;

TCustomClientDataSet.AddIndex
TCustomClientDataSet.IndexName


 
Sergey13 ©   (2006-06-08 10:52) [2]

2VALUA   (08.06.06 10:29)
>Неужели каждый раз заново открывать набор , но с разный индексацией
Если в запрос добавить секцию where, то это не будет выглядеть таким страшным решеним. 8-)


 
Stanislav ©   (2006-06-08 12:04) [3]

Либо использовать грид из EHLIB или CxGrid


 
VALUA   (2006-06-08 13:51) [4]

Господа , что делаю не так ? Кликаю на заголовке поля (pole1) и набор данных должен проиндексироваться по этому полю и обновиться  ->
procedure TForm16.DBGrid2TitleClick(Column: TColumn);
begin
if (Column.FieldName = "pole1") then begin  -  не срабатывает условие
 IBQuery1.SQL.Clear;
 IBQuery1.SQL.Add("Select * from FILE");
 IBQuery1.SQL.Add("where (Priz = 1) and (Kod = :P0)");
 IBQuery1.SQL.Add("Order by pole1,pole2,pole3");
 IBQuery1.Params[0].AsInteger := p1;
 IBQuery1.Open;
end;
end;


 
Virgo_Style ©   (2006-06-08 18:59) [5]

VALUA   (08.06.06 13:51) [4]

чему при этом равно FieldName ?


 
rar ©   (2006-06-08 20:58) [6]

Можно сделать так, при повтоном нажатии обратная сортировка, свет заголовка тоже меняем.
procedure TFormTree.DBGridMaterialTitleClick(Column: TColumn);
var
 i:integer;
begin
 if (Pos(Column.FieldName, DataModuleMain.qMaterial.Sort) > 0)and(Pos("ASC", DataModuleMain.qMaterial.Sort) > 0) then
   DataModuleMain.qMaterial.Sort := Column.FieldName + " DESC"
 else
   begin
     DataModuleMain.qMaterial.Sort := Column.FieldName + " ASC";
     for i:=0 to dbGridMaterial.Columns.Count-1 do
       dbGridMaterial.Columns[i].Title.Color:=clBtnFace;
       Column.Title.Color:=$eeeeee;
   end
end;


 
atruhin ©   (2006-06-08 21:29) [7]


> свет заголовка тоже меняем.

Обычно достаточно маленькой стрелки. Пользователи к этому привыкли. Не нужно из программы делать "раскарашку".
Сортировка НД не лучший вариант. Проще взять EhLib он работает по индексу.
Но обязательно запомнить золотые слова:

> Если в запрос добавить секцию where,


 
rar ©   (2006-06-09 17:59) [8]

> свет заголовка тоже меняем.

>Обычно достаточно маленькой стрелки. Пользователи к этому привыкли. Не нужно из программы делать "раскарашку".

а как в титл DBgrid запросто засунуть стрелку, это ведь не ListView :-))

У нас на работе мы не применяем нестандартные контролы



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.054 c
2-1153393476
C@N
2006-07-20 15:04
2006.08.13
Клавиатурный вопрос...


2-1153896858
Ironman83
2006-07-26 10:54
2006.08.13
Получение файла по сети.


2-1153524835
Батыр
2006-07-22 03:33
2006.08.13
Размер папки


15-1153391571
dera
2006-07-20 14:32
2006.08.13
Подскажите, как в XP сделать, чтоб при входе в винду, спрашивало


3-1149236558
elena_pp
2006-06-02 12:22
2006.08.13
Помогите правльно организовать таблицы