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