Оператор SEEK
Оператор SEEK
- создание действия, реализующего поиск заданных объектов на форме.
Синтаксис
SEEK [FIRST | LAST] formObjectId = expr
SEEK [FIRST | LAST] formGroupObjectId [OBJECTS formObject1 = expr1, ..., formObjectK = exprk]
SEEK NULL formGroupObjectId
Описание
Оператор SEEK
создает действие, которое позволяет изменять текущие объекты на форме. Есть две формы этого оператора. В первой указывается искомое значение одиночного объекта на форме (причем этот объект может находиться в составе некоторой группы объектов), во второй указывается конкретная группа объектов и искомые значения для некоторых объектов этой группы объектов (будем называть их объектами поиска)
Если в группе объектов, для которой осуществляется поиск, есть объекты, отличные от объектов поиска, то для таких объектов (будем называть их дополнительными) набор объектов, который будет выбран текущим, определяется опциями FIRST
и LAST
.
Если для объектов поиска, искомый набор объектов на форме не найден, то текущим набором объектов станет ближайший к искомому. Направление, в котором ищется этот ближайший набор объектов, также определяется опциями FIRST
и LAST
.
Также во второй форме оператора (когда указывается группа объектов) существует возможность сбросить все объекты заданной группы в NULL
. В этом случае направление поиска не имеет смысла / не задается.
Параметры
FIRST
Ключевое слово. Если указывается, то текущим набором объектов для:
- дополнительных объектов будет выбран первый подходящий набор в соответствии с заданным порядком.
- основных объектов, если искомый набор объектов не найден, будет выбран следующий ближайший набор в соответствии с заданным порядком.
Является значением по умолчанию.
LAST
Ключевое слово. Если указывается, то текущим набором объектов для:
- дополнительных объектов будет выбран последний подходящий набор в соответствии с заданным порядком.
- основных объектов, если искомый набор объектов не найден, будет выбран предыдущий ближайший набор в соответствии с заданным порядком.
NULL
Ключевое слово. Если указывается, то текущие значения объектов заданной группы объектов устанавливаются равными
NULL
.formObjectId
Глобальный идентификатор объекта на форме, для которого указывается искомое значение.
expr
Выражение, значением которого является искомое значение объекта на форме.
formGroupObjectId
Глобальный идентификатор группы объектов, для объектов которой указываются искомые значения.
formObject1 ... formObjectK
Список имен объектов на форме. Может содержать только часть объектов указанной группы объектов. Имя объекта задается простым идентификатором.
expr1 ... exprk
Список выражений, значения которых являются искомыми значениями соответствующих объектов в указанной группе объектов.
Примеры
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
;