Форум: "Базы";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизTDataSet.Locate не работает по сортированному DataSet Найти похожие ветки
← →
BPK (2005-02-10 13:19) [0]Для отображения данных использую связку: TRxDBGrid + TDataSource + TKbmMemTable
В программе используется сортировка по колонкамprocedure TFrmCompCat.ApplySorting;
var s:string;
i:integer;
begin
try
for i:=0 to sgComps.Columns.Count-1 do begin
s:=sgComps.Columns[i].FieldName;
mtComps.AddIndex(s,s,[]);
mtComps.AddIndex(s+"_DESC",s,[ixDescending]);
end;
mtComps.Open;
mtComps.IndexName:=FGridIndex;
finally
while mtComps.ControlsDisabled do mtComps.EnableControls;
end;
if DataAvailable then mtComps.First;
// if not mtComps.Locate("ID",FGridComponent,[]) then mtComps.RecNo:=1;
end;
procedure TFrmCompCat.sgCompsTitleBtnClick(Sender: TObject; ACol: Integer;
Field: TField);
var Rec:TCompNodeRec;
begin
Rec:=PCompNodeRec(TV.Selected.Data)^;
if Rec.SortBy<>Field.FieldName then PCompNodeRec(TV.Selected.Data)^.DescSort:=False;
if PCompNodeRec(TV.Selected.Data)^.DescSort then begin
mtComps.IndexFieldNames:="";
mtComps.IndexName:=Field.FieldName+"_DESC";
PCompNodeRec(TV.Selected.Data)^.SortBy:=Field.FieldName+"_DESC";
end
else begin
mtComps.IndexName:="";
mtComps.IndexFieldNames:=Field.FieldName;
PCompNodeRec(TV.Selected.Data)^.SortBy:=Field.FieldName;
end;
mtComps.First;
PCompNodeRec(TV.Selected.Data)^.DescSort:=not PCompNodeRec(TV.Selected.Data)^.DescSort;
end;
В ходе выполнения программы делаю перемещение к записи с нужным IDом:
if not mtComps.Locate("ID",ID,[]) then mtComps.RecNo:=1;
Если используется восходящая сортировка, то locate находит запись, если нисходящая - то не находит. Как исправить?
← →
BPK (2005-02-11 09:37) [1].
← →
Johnmen © (2005-02-11 09:46) [2]А что такое TKbmMemTable ?
Посмотри, как в нем реализован Locate. Возможно, там ошибки.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c