Основы языка формул. Синтаксис и лексические элементы формул, страница 13

@DbColumn ("ODBC" : "NoCache"; "HR Lookup"; skern: nreks; Department; cDeptName; "Distinct" : "Ascending")

С помощью функции @DbCommand() можно передавать операторы SQL в источники данных  ODBC.

ПРЕДОСТЕРЕЖЕНИЕ

Для использования в приложениях источников данных ODBC пользователь должен иметь право доступа нужного типа к требуемому источнику данных ODBC. Если пользователю не разрешается считывать данные из этого источника данных ODBC, то попытка просмотра завершится неуспешно. Чтобы решить эту проблему, можно использовать DECS либо программный продукт интеграции данных, например  LotusEnterpriseIntegrator.

Работа со списками

Как поля, так и переменные могут содержать списки чисел, значений даты/времени, текстовых значений или названий (имен). Поле, которое содержит список, называется полем многих значений. Функции @DbColumn() и @DbLookup() возвращают список значений. Со списками можно производить математические действия, заменять отдельные элементы списка, извлекать отдельные элементы из списка, объединять списки и так далее. Более того, все это осуществляется намного легче по сравнению с обработкой массивов в языке LotusScript. Имеется ряд функций @Functions, осуществляющих над списками различные операции; они перечислены в табл. 19.9.

Имеется также ряд операторов действий для работы со списками. Самым важным из них является оператор конкатенации списков, который обозначается символом двоеточия (:). Этот оператор позволяет создавать списки из констант, переменных, а также полей, содержащих как одно, так и множество значений. Единственное требование заключается в том, что список должен содержать подобные элементы. В следующем примере создается список текстовых элементов:

jcTextList := "Chapter I" : "Chapter 2" : "Chapter 3" : "Chapter 4"

Таблица 19.9 - Функции обработки списков в среде Domino

Функция

Возвращаемое значение

@Contains()

Значение True, если заданное значение содержится в списке

@Elements()

Число элементов в списке

@Explode()

Создает список из текстовых строк или диапазона данных

@lmplode()

Создает текстовую строку на базе списка

@lsMember()

Значение True, если заданное значение является элементом списка

@lsNotMember()

Значение True, если заданное значение является элементом списка

@Member()

Позицию, в которой находится элемент списка

@Replace()

Заменяет элементы списка

@ReplaceSubString()

Заменяет значения строки новыми значениями

@Subset()

Извлекает значения из списка: если аргументом является положительное число, то функция извлекает значения в направлении слева направо, если отрицательное число — в направлении справа налево

@Sum()

Сумма всех элементов числового списка

@Trim()

Удаляет из списка пустые элементы

@Unique()

Список уникальных значений

Над списками можно также производить математические действия; для этого используются следующие операторы: +, -, *, /, >, <, >=, <=, = и !=. Действия над элементами списков выполняются попарно или, как еще говорят, параллельно. Вот пример сложения двух текстовых списков:

jcTextListl := "Chapter 1" : "Chapter 2" ;

jcTextList2 := "1" : "2" ;

jcTextListl + jcTextList2

Результат будет следующим:

"Chapter   11";    "Chapter   12"

Добавление звездочки (*) к этим операторам действий над списками означает, что элементы будут перемещенными (все элементы взаимно комбинируются). В предыдущем примере изменим последнюю строку следующим образом:

jcTextList1 *+ jcTextList2

Получим следующий результат:

"Chapter 11"; "Chapter 12"; "Chapter 11"; "Chapter 12"

В следующем фрагменте программного кода операции над списками используются для создания нескольких полей многих значений: