xpin2013
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Написал Индекc который навешивается на любой TDataSet. Он нужен для переборов со сложным анализом, где Locate(LocateNext) делается по индексу а не с самого начала как у стандартного датасета. Первые пробы были на FIBPlus. В случае когда Locate не срабатывает Индекс даёт 2 секунды, без индекса 30 секунд. Но в случае когда Locate срабатывает делается Delete после чего обязательно делать CloseOpen фибовского компонента. Не в качестве рекламы вот код: Код: procedure TdmExchange.Load1; var N, ID_PREP: Integer; indexL: TDataSetIndexList; begin quPrepClient.ParamByName('ID_CLIENT').AsInteger := dmMain.quClient['ID_CLIENT']; quPrepClient.CloseOpen(True); indexL := TDataSetIndexList.Create('ID_PREP', quPrepClient); indexL.Eval; // Избавление от дубликатов. quPrepClient.First; while not quPrepClient.Eof do begin N := quPrepClient.RecNo; ID_PREP := quPrepClientID_PREP.Value; while indexL.LocateNext(ID_PREP, []) do begin indexL.Delete; quPrepClient.Delete; quPrepClient.CloseOpen(True); //!!!!!!!!!!!!!!!! Обязательно! quPrepClient.RecNo := N; end; quPrepClient.RecNo := N; quPrepClient.Next; end; end; | Вот почему без CloseOpen косячит я не пойму пока... |