Поиск (SEEK)
Оператор поиска пытается для заданной группы объектов формы сделать заданный набор объектов текущим. Объекты, для которых осуществляется поиск, будем называть объектами поиска.
Направление поиска
Если в группе объектов, для которой осуществляется поиск, есть объекты, отличные от объектов поиска, то для таких объектов (будем называть их дополнительными) набор объектов, который будет выбран текущим, определяется специальными опциями:
- Первый (
FIRST
) - будет выбран первый подходящий набор в соответствии с заданным порядком. - Последний (
LAST
) - будет выбран последний подходящий набор в соответствии с заданным порядком.
Если для объектов поиска, искомый набор объектов на форме не найден, то текущим набором объектов станет ближайший к искомому. Направление, в котором ищется этот ближайший набор объектов, также определяется вышеописанными опциями:
FIRST
- будет выбран следующий ближайший набор в соответствии с заданным порядком.LAST
- будет выбран предыдущий ближайший набор в соответствии с заданным порядком.
Установка NULL
значений
Также в этом операторе существует возможность сбросить все объекты заданной группы в NULL
. В этом случае направление поиска не имеет смысла / не задается.
Язык
Для объявления действия, реализующего изменение объекта, используется оператор SEEK
.
Примеры
number = DATA INTEGER (Order);
FORM orders
OBJECTS o = Order
PROPERTIES(o) READONLY number, currency, customer
;
newOrder {
NEW new = Order {
number(new) <- (GROUP MAX number(Order o)) (+) 1;
SEEK orders.o = new;
}
}
seekFirst { SEEK FIRST orders.o; }
seekLast { SEEK LAST orders.o; }
EXTEND FORM orders
PROPERTIES(o) newOrder, seekFirst, seekLast
;