Редактор выражений контроля вызывается с помощью кнопки Формулы на панели инструментов окна. Откроется окно Редактор формул. |
На вкладке Редактор (рис. 17.8) возможно создание следующих формул контроля:
·Общая формула контроля сохранения – выполняется при сохранении изменений в таблице базы данных, т.е. при нажатии кнопок Сохранить или Сохранить и закрыть;
·Общая формула контроля редактирования – выполняется при изменении статуса редактора: при добавлении новой записи, при открытии записи на редактирование.
Текущее значение статуса редактора можно получить с помощью функции EditorState(). Функция возвращает одно из значений:
·dsBrowse – просмотр записи;
·dsEdit – редактирование записи;
·dsInsert – добавление записи.
Для того, чтобы вывести предупреждение или запрет при выполнении какого-либо действия, используются функции MSGWARN() и MSGERROR():
Синтаксис функции |
Описание функции |
MSGWARN(<Строка>) |
Выводит warning-сообщение. Обычно используется в контрольных выражениях в сочетании с IF: IF(ISNULL({Таблица.Поле}), MSGWARN('Заполните поле!'), 0) |
MSGERROR(<Строка>) |
Выводит error-сообщение. Обычно используется в контрольных выражениях в сочетании с IF. При срабатывании блокирующего контроля на сохранение данных в окне с сообщением об ошибке можно нажать кнопку Отменить изменения, что позволяет отменить введенные пользователем еще не сохраненные данные (аналог меню Врач / Аннулировать последние изменения). IF(ISNULL({Таблица.Поле}), MSGERROR('Заполните поле!'), 0) |
Рисунок 17.8. Формулы контроля на форме редактирования. Вкладка Редактор
До сохранения в таблице базы данных введенные в поля значения сохраняются в кэше. На вкладке Cache (рис. 17.9) можно добавить контроли, выполняемые при сохранении данных в кэше, а также формулы вычисления значений полей при создании и редактировании записи.
В списке слева выбирается поле, на которое назначается контроль.
С помощью кнопки Настройки можно управлять списком полей: ·Отображать имена полей – показать имена полей в таблице базы данных; ·Сортировать поля – отсортировать список полей по алфавиту; ·Только поля с формулами – показать в списке только поля, на которые уже назначены формулы. |
Для каждого поля можно задать следующие формулы:
·Доступность поля – формула, возвращающая 0 (поле недоступно для редактирования) или 1 (поле доступно для редактирования);
·Значение поля при редактировании – значение, которое подставляется при редактировании данных в редакторе;
·Значение поля по умолчанию – значение, которое подставляется в поле при создании новой записи.
Данные формулы вычисляются при каждом изменении значения какого-либо поля на форме.
Рисунок 17.9. Формулы контроля на форме редактирования. Вкладка Cache
Вид формулы и поле, на которое назначена формула, выделяются жирным шрифтом.
Для добавления и редактирования формулы служит кнопка Редактировать выражение, открывающая стандартный редактор формул. |
В формулах контроля доступны активные и динамические фильтры, а также часть функций МЕДИАЛОГ:
·функции для работы со строками,
·функции для работы с числами,
·функции для работы с полями типа Дата,
·функции для контрольных выражений,
·функции IF(), ISNULL(), EXEC(), EDITORSTATE().
Обращение к текущему значению поля, сохраненному в кэше, производится в виде {Cache.Имя_поля}.
Подробнее о редакторе выражений и функциях см. Формулы, Перечень функций МИС МЕДИАЛОГ (EMR.pdf).