Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Как вернуться на запись в recordset'е?


Автор: NetShadow 14.9.2007, 09:29
Вобщем ситуация такая, есть TDBGridEx1, связанный с запросом TSmartQuery1, через датасорс TOraDataSource1, ситуация такая, есть кнопка, которая форматирует записи в полях гида, циклом пробегается по всему DataSet'у и возвращается на первую запись не зависимо от того на каку запись поставил, можно ли сделать, чтобы возвращалась на запись на которую выделял?

Автор: ALeXandrK 14.9.2007, 12:21
Запомнить уникальный ключ или другое значение нужной записи, а потом
воспользоваться методом Locate(...), который тебя вернет на эту запись.

А лучше изменить в твоем алгоритме ту часть, которая бегает по всему DataSet`у,
и превратить ее в запрос с помощью TADOStoredProc или TADOCommand, тогда
скорость увеличиться и запись искать не придется.

Автор: Bose 14.9.2007, 12:48
Стандартный подход - использование закладок:
Код

Procedure MakeSomethingWithDataset(DataSet : TDataSet);
Var Bookmark : TBookmark;
Begin

  Bookmark := Dataset.GetBookmark; // zapominajem zapisj
  Try
    DataSet.First;
    While not DataSet.Eof Do
    Begin
      // delajem 4to-nibudj
        DataSet.Next;
    End;

    DataSet.GotoBookmark(Bookmark); // vozvrawaemsja k staroj zapisi

  Finally
    DataSet.FreeBookmark(Bookmark); // osvobozhdaem zakladku
  End;

End;


Автор: pseud 17.9.2007, 12:16
Код

i := DataSet.RecNo;
{манипуляции}
DataSet.RecNo := i;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)