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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.056 c
14-1109109276
Витос
2005-02-23 00:54
2005.03.13
Dial-Up


14-1109077840
}|{yk
2005-02-22 16:10
2005.03.13
Голосование. Футбольные ветки на DM


14-1108993511
juice
2005-02-21 16:45
2005.03.13
C++ Builder 5 Fatal: Unable to open file FILECTRL.OBJ


6-1105227027
Raider
2005-01-09 02:30
2005.03.13
Поиск сервера


1-1109317855
Pashkerton
2005-02-25 10:50
2005.03.13
Дерево подчинённости