Оператор 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
;