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

Функции "Is" применяются тогда, когда необходимо предпринимать некоторые действия, зависящие от состояния документа. В примере с хронологией редактирования документа в разделе "Получение информации о сеансе работы и пользователе" функция @IsDocBeingSaved использовалась для того, чтобы обеспечить обновление значений полей в требуемый момент времени.

Специальные поля, приведенные в конце табл. 19.8 являются нередактируемыми, но использовать их в формулах можно. Из этих трех полей наиболее часто используется поле $Ref; в поле $Ref хранится уникальный идентификатор UNID родительского документа и оно обеспечивает ссылку на документ для обновления значения поля. Это можно использовать в функции @SetDocField() для обновления родительского документа из ответного документа.

Выборка данных с помощью функций @DbColumn и ф @DbLookup

Во всех языках программирования, допускающих работу с базами данных, имеется возможность просмотра справочной, а также иной информации и почти во всех приложениях в той или иной степени эта возможность используется. В приложениях Domino часто применяются формулы для ключевых полей, обеспечивающие просмотр информации в той же самой базе данных, в других базах данных Domino и даже в базах данных других типов. Функции @DbColumn() и @DbLookup() — это функции, наиболее часто используемые для выборки данных, хотя @DbCommand() также может использоваться для извлечения данных из источников данных ODBC.

ОГРАНИЧЕНИЕ НА РАЗМЕР ДАННЫХ

Функции @DbColumn(), @DbLookup|) и @DbCommand() могут возвращать данные, размер которых не превышает 64 Кб. Чтобы обойти это ограничение, используйте функцию @PickList{).

Функция @DbColumn() возвращает список значений из заданного столбца представления. Представление может находиться как в текущей базе данных, так и в какой-либо другой. Функция @DbLookup() возвращает также список значений из заданного столбца представления. Но в отличие от функции @DbCoIumn(), которая загружает в память все содержимое столбца полностью, в функции @DbLookup() можно задавать значение ключа. Это значение сравнивается с первым столбцом сортировки представления и функция выбирает значения только для документов, соответствующих ключу.

Как можно видеть ниже, функции @DbColumn() и @DbLookup() имеют похожий синтаксис:

@DbCoIumn (Class : NoCache ; server : database ; view name; column number) @DbLookup (Class : NoCache ; server: database ; view name; key value; column '"number or field name)

Параметр Class определяет тип базы данных. Базы данных Notes обозначаются словом "Notes" или парой двойных кавычек. Параметр NoCache указывает, что результат не будет запоминаться в оперативной памяти (используется по умолчанию). Запоминание результатов просмотра может повысить производительность при изучении данных, которые изменяются не слишком часто. Параметр Server представляет собой имя сервера; вместо имени текущего сервера можно использовать пару двойных кавычек. Параметр Database может определять текущую базу данных (представленной парой двойных кавычек) или быть идентификатором ID реплики базы данных. Это может быть также имя файла операционной системы. В таком случае необходимо включить путь относительно каталога данных на сервере. Параметр View пате — это имя представления или его псевдоним.

Следует отметить, что в функции @DbColumn() необходимо задавать номер столбца, тогда как в функции @DbLookup() можно задавать либо номер столбца, либо имя поля документа. Данное поле документа может отсутствовать в представлении.

Функции @DbColumn() и @DbLookup() могут также использоваться для просмотра источников данных ODBC. Например, можно использовать драйвер ODBC для SQL Server, Sybase или любых других баз данных. После того, как источник ODBC будет сконфигурирован, можно просматривать информацию в другой базе данных, передавая имя таблицы, имя столбца ключа и значение ключа (для функции @DbLookup()), или задавая имя таблицы и имя столбца (для функции @DbColumn()). Например, если требуется просмотреть информацию об отделах в таблице из базы данных SQL Server, то можно использовать следующий код: