Чтобы создать скрипт, в окне Скрипты (рис. 4.1) нужно выбрать группу и перейти в подраздел Скрипты. Для создания запроса нужно также выбрать группу и перейти в подраздел Запросы. Создание, редактирование и удаление скриптов и запросов производится с помощью стандартных кнопок на панели инструментов.
При создании скрипта или запроса доступен переключатель Тип (Скрипт / Запрос). Если его изменить, скрипт (запрос) при сохранении будет перемещен в соответствующий подраздел. После сохранения скрипта (запроса) изменить его тип нельзя.
Скрипты
При создании или редактировании скрипта открывается окно, изображенное на рис. 4.2. В этом окне заполняются:
·наименование скрипта;
·код скрипта;
·комментарий к нему.
На вкладке SQL пишется текст скрипта. В скрипте можно использовать текущие значения полей из таблиц ЭМК и активные фильтры.
Существует несколько ограничений при написании скриптов в МЕДИАЛОГ:
·не поддерживаются русские символы;
·не поддерживается оператор GO;
·не поддерживается использование оператора %, возвращающего остаток при делении;
·комментарий не должен идти сразу после обращения к активному фильтру.
Рисунок 4.2. Редактирование скрипта
·Кнопка Выбор таблиц и полей открывает окно поиска нужных полей и таблиц (рис. 4.3). При нажатии на нее откроется окно со списком таблиц, причем можно отобразить все таблицы или таблицы по текущему срезу данных, выбрав нужное значение переключателя Таблицы. При выборе поля в режиме Все таблицы вставится непосредственно обращение к полю. Если же выбрать поле в режиме Текущий срез данных, то при выполнении скрипта вместо указанного поля будет подставлено значение этого поля. ·Нажав аналогичную кнопку поиска в окне выбора таблиц и полей, можно найти нужную таблицу по названию или физическому имени. |
|
·Переключатель, устанавливающий тип значения поля, указывает, какое значение поля должно браться: текущее (измененное пользователем) или значение до редактирования. В первом случае выбранный элемент появится в тексте скрипта с символом «@», во втором случае – с символом «#» перед именем поля. Вставить элемент можно перетащив его мышью в поле с текстом скрипта либо нажав кнопку Выбрать элемент. |
Рисунок 4.3. Выбор поля
·В скрипт можно вставить обращение к активному или динамическому фильтру. Для этого нужно нажать кнопку, изображенную слева, и выбрать фильтр. Обращение к фильтру вставляется в формате :%Имя_фильтра. |
В скрипте можно использовать параметры – поля, значения которых будут задаваться непосредственно при выполнении скрипта. Параметры обозначаются через двоеточие, например – :PATIENTS.PATIENTS_ID.
На вкладке Параметры с помощью кнопки Обновить список параметров автоматически формируются параметры, которые используются в скрипте. |
Если в примере на рис. 4.2 строку
where PATIENTS_ID = :@PATIENTS.PATIENTS_ID
заменить на
where PATIENTS_ID = :PATIENTS.PATIENTS_ID
т.е. не будет указано, что берется текущее значение поля PATIENTS_ID, то PATIENTS.PATIENTS_ID будет распознано как параметр (рис. 4.4).
Если параметров несколько, их порядок можно менять кнопками Переместить параметр вверх и Переместить параметр вниз. При запуске скрипта с параметрами функцией EXEC_SCRIPT(<Имя скрипта>[,<Параметр1>,<Параметр2>,...]) в ней должны быть указаны значения параметров в заданном порядке. |
Рисунок 4.4. Параметры скрипта
На вкладке Обновляемые таблицы (рис. 4.5) указываются таблицы, которые должны быть обновлены в результате действия скрипта. Для каждой таблицы могут быть заданы дополнительные параметры обновления:
·если установлен флажок Автосохранение данных, то данные в таблице будут автоматически сохранены сразу после вызова скрипта (это используется в основном при вызове скрипта через кнопку макроподстановки), иначе данные будут сохраняться только при переключении экранной формы;
·если установлен флажок Обновлять текущую запись, после выполнения скрипта текущая запись таблицы будут перечитана с сервера.
Флажок Пересчитывать формулы видимости/доступности контролов, локальные запросы на форме ставится, если необходимо заново вычислить формулы видимости и доступности объектов на экранной форме, а также обновить локальные запросы после выполнения скрипта.
Рисунок 4.5. Обновляемые таблицы
Запросы
Запрос формируется аналогично скрипту. Как и в скриптах, в запросах поддерживается синтаксис Transact-SQL (объявления переменных, курсоры и т.д.). С помощью описанных выше кнопок можно вставить в запрос текущие значения полей из таблиц ЭМК и активные фильтры. В запросах не поддерживаются русские символы и оператор GO.
В отличие от скриптов, после выполнения запроса не предусмотрено обновление таблиц (вкладка Обновляемые таблицы недоступна).
Созданные таким образом запросы предназначены только для вызова через функцию query (см. ниже) и должны возвращать только одну строку.
В примере на рис. 4.6 приведен запрос, возвращающий первое значение из таблицы, соответствующее некоторому условию, причем таблица и условие задаются в качестве параметров.
Рисунок 4.6. Формирование запроса