Главная страница
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.046 c
2-1153752574
VitV
2006-07-24 18:49
2006.08.13
Delphi+Interbase - организация таблиц


15-1153094770
Ketmar
2006-07-17 04:06
2006.08.13
никому не нужен удалёный программист?


2-1153741979
rsa_
2006-07-24 15:52
2006.08.13
не запускаеться exe-шник написанный на delphi6 в windowsXP


2-1153676677
cando
2006-07-23 21:44
2006.08.13
Самый быстрый способ узнать размер папки


15-1152709539
oldman
2006-07-12 17:05
2006.08.13
Ультиматум истек - Microsoft оштрафован