→ Пошук по сайту       Увійти / Зареєструватися
Знання Технология ADO в Delphi Компоненты Delphi для поддержки ADO Общие свойства компонентов-наборов

Методы класса TCustomADODataSet

Любопытной особенностью ADO-наборов являются инкапсулированные в них методы SaveToFile и LoadFromFile. В ADO эти методы используются как один из возможных механизмов обмена данными между разными компьютерами, а также для отложенной обработки данных. Перед вызовами методов ADO-набор должен быть закрыт. После успешного вызова LoadFromFile набор автоматически открывается в том состоянии, в котором он был сохранен методом SaveToFile.

ADO наборы можно сортировать по закладкам (метод FilterOnBookmarks). Например:

procedure  TForml.ButtonlClick(Sender:   TObject); 
var BM1,   BM2:   TbookmarkStr;
begin
  with ADODataSetl do 
  begin  
    BM1   :=  Bookmark;
    MoveBy(3) ;
    BM2   :=  Bookmark;
    FilterOnBookmarks([BM1,   BM2]); 
  end;
end;

Для работы в многопользовательском режиме может оказаться полезным метод Clone, с помощью которого уже созданный НД дублируется в вызывающий. Например:

AdoTablel.Open;     //Создан исходный НД
AdoTable2.Clone(AdoTablel,   ItReadOnly);     //Создан   дубликат в НД AdoTable2

Для ADO наборов определен метод Requery, с помощью которого программист может обновить НД. Его действие фактически эквивалентно последовательному использованию Close - Open. Особенностью является то обстоятельство, что влияющие на НД свойства, такие как CursorLocation, CursotType, LockTable и т.п. остаются неизменными, в то время как в промежутке между использованием Close-Open эти свойства можно изменить и тем самым повлиять на результирующий НД.

Весьма необычным является метод Seek, осуществляющий поиск записи по заданному значению (значениям) ключевого поля (полей). В принципе, он реализует те же действия, что и метод Locate, но отличается от него несколькими важными особенностями. Во-первых, для Locate не имеет значения, индексировано ли поле (поля) по которому (которым) ищутся записи. В то же время Seek ищет только по индексированным полям, которые, к тому же, должны быть указаны в свойствах IndexNames или IndexFields. Далее, для Locate курсор не перемещается, если поиск неудачен, для Seek -перемешается всегда, в зависимости от указанного параметра SeekOption (если запись не найдена, курсор перемещается в начало НД, его конец, непосредственно перед искомой записью или сразу за ней). И, наконец, Seek не может вести поиска с игнорированием возможной разницы в высоте букв или по частичному совпадению поисковых значений. К сожалению, многие провайдеры OLE DB не допускают установки значений свойств IndexNames или IndexFields и, таким образом, не поддерживают Seek.

С помощью метода Supports можно проверить различные характеристики набора и, в частности, может ли он поддерживать Seek:

AdoTablel.Open;
if Supports ([coSeek]) then
  AdoTablel.Seek(90001,soAfterEQ) 
  else 
  if Supports ([coLocate]) then
    AdoTablel.Locate('Number’,90001, [ ] ) ;
загрузка...
Сторінки, близькі за змістом