Перейти к основному содержимому
Версия: 5.x

Поиск (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
;