Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
ВнизСортировка в DBGridEh Найти похожие ветки
← →
3APA3A © (2004-08-25 23:23) [0]Не знаю, в эту ветку или в "Базы", но
Есть ли в DBGridEh встроенная сортировка, то есть шелкнул я по заголовку столбца - он отсортировал по этому столбцу и т.д.
Само собой, я могу в самом запросе делать order by..., но интеерсно - можно ли без этого?
← →
YurikGL © (2004-08-25 23:31) [1]Обрабатываешь onclick и вперед.
Кстати, ИМХО контекстное меню удобнее реализовывать
← →
YurikGL © (2004-08-25 23:32) [2]http://delphimaster.net/view/3-1093442653/
← →
jack128 © (2004-08-26 00:10) [3]есть. см содержимое папки DataService
← →
KSergey © (2004-08-26 07:56) [4]Если компоненты доступа ADO - см. так же http://delphimaster.net/view/3-1093442653/
← →
3APA3A © (2004-08-26 10:30) [5]to YurikGL
С этом обсуждении предполагается, что я использую FIBPlus. Но я использую IBX и у IBX нет метода DoSort()...
Как быть?
to jack128
В смысле - папки DataService...
← →
Роман Снегирев (2004-08-27 12:50) [6]а индекс использовать не судьба? или переопределить запрос (в смысле ORDER BY)?
← →
Карелин Артем © (2004-08-27 13:00) [7]Народ, не туда вас понесло.
uses EhLibIBX и все.
В крайнем случае вручную зовемprocedure ApplySortingForSQLBasedDataSet(Grid: TCustomDBGridEh; DataSet: TDataSet;
UseFieldName: Boolean; IsReopen: Boolean);
function DeleteStr(str: String; sunstr: String): String;
var
i: Integer;
begin
i := Pos(sunstr, str);
if i <> 0 then
Delete(str, i, Length(sunstr));
Result := str;
end;
var
i, OrderLine: Integer;
s: String;
SQL: TStrings;
begin
if not IsSQLBasedDataSet(DataSet, SQL) then
raise Exception.Create(DataSet.ClassName + " is not SQL based dataset");
s := "";
for i := 0 to Grid.SortMarkedColumns.Count - 1 do
begin
if true
then s := s + Grid.SortMarkedColumns[i].FieldName
else s := s + IntToStr(Grid.SortMarkedColumns[i].Field.FieldNo);
if Grid.SortMarkedColumns[i].Title.SortMarker = smUpEh
then s := s + " DESC, "
else s := s + ", ";
end;
if s <> "" then
s := "ORDER BY " + Copy(s, 1, Length(s) - 2);
OrderLine := -1;
for i := 0 to SQL.Count - 1 do
if UpperCase(Copy(SQL[i], 1, Length("ORDER BY"))) = "ORDER BY" then
begin
OrderLine := i;
Break;
end;
if OrderLine = -1 then
begin
SQL.Add("");
OrderLine := SQL.Count-1;
end;
SQL.Strings[OrderLine] := s;
if IsReopen then
begin
DataSet.Close;
DataSet.Open;
end;
end;
← →
jack128 © (2004-08-27 13:39) [8]3APA3A © (26.08.04 10:30) [5]
to jack128
В смысле - папки DataService
в этой папке {%EhLib_Root%}\DataService находится, в часности, вот этот юнит -
Карелин Артем © (27.08.04 13:00) [7]
uses EhLibIBX и все.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c