Библиотека компонент EhLib Руководство разработчика


Метки записей и переход на запись по метке



страница11/13
Дата09.08.2019
Размер456 Kb.
#128179
ТипРуководство
1   ...   5   6   7   8   9   10   11   12   13

Метки записей и переход на запись по метке.


Дополнительно к перемещению с записи на запись в dataset, также бывает полезно, получить маркер (Bookmark) конкретной позиции в dataset’е чтобы потом можно было быстро возвратиться на желаемую запись. TDataSet вводит возможность пометки записей, которая состоит из свойства Bookmark и пяти методов. Реально закладки в TMemTable являются номерами записей (RecNo) в DataSet’е.
Свойство Bookmark.
Свойство Bookmark указывает на текущую закладку на запись. Она указывает на текущую запись. Закладка является строкой, которая идентифицирует текущую закладку. Всякий раз, когда Вы присваиваете это свойство DataSet переходит на запись соответствующую закладке.
Метод GetBookmark
Я не рекомендую пользоваться этим метод, используйте вместо него свойство Bookmark. Детально об этом методе читайте в документации по VCL.
Методы GotoBookmark и BookmarkValid
При вызове GotoBookmark с параметром закладка метод перемещает курсор в dataset’е в позицию определенную закладкой. Перед вызовом GotoBookmark, Вы можете назвать BookmarkValid, чтобы определить действительно ли заклада указывает на одну из записей в DataSet'е. BookmarkValid возвращает True если закладка указывает на запись.
Метод CompareBookmarks
Вы можете вызвать CompareBookmarks, чтобы определить отличается ли закладка на которую Вы хотите перейти, от другого закладки. Если две закладки ссылаются на ту же запись (или если оба нуль), CompareBookmarks возврат 0.
Метод FreeBookmark
Используется в комбинации с GetBookamrk. Я не рекомендую пользоваться этим методом. Детально об этом методе читайте в документации по VCL.

Поиск в TMemTableEh


Вы можете осуществлять поиск в TMemTableEh используя следующие методы:


  1. Locate

Метод locate перемещает курсор на первую строку, удовлетворяющую критерию поиска. В своей самой простой форме, Вы передаете имя поля, в котором искать, значение которое надо найти, и влаг определяющий нужно ли искать с без учета регистра букв или/и использовать сопоставление. (Частичное сопоставление, значит что строка поиска должна только префиксом значения искомого значения.) Например, следующей код перемещает курсор в первую колонку в CustTable где величина в поле Company, "Professional Divers, Ltd.":


var

LocateSuccess: Boolean;

SearchOptions: TLocateOptions;

begin

SearchOptions := [loPartialKey];

LocateSuccess := CustTable.Locate('Company', 'Professional Divers, Ltd.', SearchOptions);

end;
Если Locate находит совпадение, то первая запись, удовлетворяющая критерию поиска становится текущей записью. Locate возвращает True если он находит запись, False если это нет. Если поиск ничего не находит, текущая запись не изменяется.
Реальная мощность Locate начинает действовать, когда Вы хотите найти по нескольким полям и определяете множественные значения поиска. Величины Искомые значения являются переменной типа Variant, что означает что вы можете определить различные типы данных в своих критериях поиска. Для того, чтобы задать несколько полей по которым нужно искать, разделите каждое поле в строке точками с запятой.
Поскольку искомые значения являются набором значений типа Variant, Вы должны либо передать несколько значений как Variant array в качестве аргумента, либо Вы должны сконструировать выражение типа Variant array в коде, используя функцию VarArrayOf. Следующий код иллюстрирует поиск по нескольким столбцам используя список величин поиска и частичное совпадение:
with CustTable do

Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver','P']), loPartialKey);


Locate использует самый быстрый из возможных методов поиска. Если столбцы в поиске проиндексированы и индекс совместимый с опциями поиска Locate использует индекс.


  1. Lookup


Lookup ищет первую запись, которая соответствует критериям определенного поиска. Если он находит запись то возвращает значение одного или набор полей заданных параметром ResultFields. Поиск не перемещает курсор на найденную запись, а только возвращает найденные значения.
В своей самой простой форме, Вы передаете Lookup имя поля, в котором надо искать, искомую величину, и поле или поля значение которых надо врзвраить из найденной записи. Например, следующий код ищет первую запись в CustTable где величина области Компании - "Профессиональные Ныряльщики, Ltd." и возвращает имя компании, контактный человек, и номер телефона для компании:
var

LookupResults: Variant;



begin

LookupResults := CustTable.Lookup('Company', 'Professional Divers, Ltd.', 'Company;Contact;Phone');



end;
Lookup возвращает значения заданных полей из первой найденной записи. Значения величин имеют тип Variant. Если задано несколько полей, Lookup возвращает массив Variant’ов. Если ни одной записи не находится, Lookup возвращает значение Null.
Подобно, Locate, Lookup использует самый быстрый из возможных методов поиска.


  1. FindRec

Метод FindRec ищет первую запись, которая соответствует критериям поиска и возвращает номер первой найденной записи. Синтаксис вызова метода совпадает с синтаксисом метода Locate.


При работе MemTableEh в режиме дерева методы Locate и FindRec ищут записи только в узлах которые находятся в открытых (Expanded) ветках. Для поиска во всех узлах и автоматического раскрытия владельцев найденного узла используйте метод MemTableEh.TreeList.Locate.


  1. GotoRec

Метод GotoRec перемещает курсор в позицию запись которой указывает на запись заданную параметром Rec. GotoRec возвращает True если он находит запись, False если это нет.



Поделитесь с Вашими друзьями:
1   ...   5   6   7   8   9   10   11   12   13




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница