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

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