Форум: "Базы";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c