SaveToDB Framework для Oracle Database

SaveToDB Framework для Oracle Database

SaveToDB Framework for Oracle Database

SaveToDB Framework for Oracle Database содержит готовые решения задач разработки приложений с использованием Oracle Database и Microsoft Excel.

Фреймворк корректно устанавливается и удаляется. Используются схемы SAVETODB_DEV и SAVETODB_XLS.

Фреймворк можно быстро установить непосредственно из плагина SaveToDB и сгенерировать книгу для настройки фреймворка из Microsoft Excel.

См. Мастер установки SaveToDB Framework и Мастер создания книги настройки.

 

Далее можно настроить наиболее интересующие возможности:

Установка и удаление

Варианты установки и удаления SaveToDB Framework

Возможны следующие варианты установки и удаления SaveToDB Framework:

  1. С использованием Мастера установки SaveToDB Framework из плагина SaveToDB.
  2. С использованием программы SaveToDB Framework Installer из состава SaveToDB SDK.
  3. С использованием исходного SQL-кода.
  4. С использованием командных файлов.

Первые два способа позволяют установить или удалить SaveToDB Framework во всех поддерживаемых серверах баз данных:
Microsoft SQL Server, Microsoft SQL Server Compact, Oracle Database, IBM DB2, MySQL, MariaDB, PostgreSQL, NuoDB и SQLite.

Описание шагов SaveToDB Framework Installer полностью совпадает с Мастером установки SaveToDB Framework.

Исходный SQL код находится в папке "_Oracle Framework Rus" в файлах:

  • framework-install-ru.sql
  • framework-remove-ru.sql

Вариант с использованием командных файлов описан ниже.

Замечания к установке и удалению

Для установки и удаления требуются права администратора БД.

После установки следует добавить конечных пользователей Excel к роли SAVETODB_XLS_ROLE, а разработчиков приложений Excel или продвинутых пользователей к роли SAVETODB_DEV_ROLE.

В процессе удаления удаляются только объекты, схемы и роли, которые были созданы в процессе установки фреймворка.

Важно! При удалении объектов SaveToDB Framework удаляется вся информация о выполненных настройках из конфигурационных таблиц.

Если Вы планируете установить SaveToDB Framework повторно, сохраните предварительно данные конфигурационных таблиц.

Установка и удаление командными файлами

Код и утилиты фреймворка находится в папке "SaveToDB Framework for Oracle Database".

Установка

  1. Запустите 1-edit-config.cmd и настройте строку подключения "setup".
  2. Запустите 2-install-savetodb-framework.cmd.
  3. Запустите 3-clear-credentials.cmd и удалите пароль строки подключения "setup".

Пользователь строки подключения "setup" должен обладать правами администратора базы данных.

Вместо удаления пароля в строке подключения на шаге 3, можно зашифровать строку:

выберите опцию "Только пользователь" в программе gConnectionManager.

Удаление

  1. Запустите 1-edit-config.cmd и настройте строку подключения "setup".
  2. Запустите framework-remove.cmd.
  3. Запустите 3-clear-credentials.cmd и удалите пароль строки подключения "setup".

Вывод объектов базы данных

  1. Запустите 1-edit-config.cmd и настройте строку подключения "setup".
  2. Запустите framework-list.cmd.
  3. Запустите 3-clear-credentials.cmd и удалите пароль строки подключения "setup".

Пользователи и роли

Фреймворк создает следующие схемы базы данных:

ПользовательОписание
SAVETODB_XLSСхема содержит объекты конфигурации для конечных пользователей.
SAVETODB_DEVСхема содержит данные конфигурации, которые используются разработчиками.

Фреймворк создает следующие роли:

РольОписание
SAVETODB_XLS_ROLEРоль конечных пользователей приложений в Microsoft Excel.
SAVETODB_DEV_ROLEРоль разработчиков приложений Microsoft Excel.

Разрешений роли SAVETODB_XLS_ROLE достаточно для чтения конфигурации SaveToDB.

Разрешений роли SAVETODB_DEV_ROLE достаточно для чтения и изменения конфигурации SaveToDB.

Список запросов

Назначение

С плагином SaveToDB пользователи могут переключать запросы к базе данных, используя список запросов на ленте.

Это удобно, т.к. в книге Microsoft Excel не нужно делать много листов, а можно динамически переключать запросы на одном листе. К тому же, при добавлении новых запросов в базу данных, пользователю достаточно обновить список запросов, и можно получать данные новых объектов.

Представление списка запросов используется также для конфигурирования таблицы сохранения или пользовательских процедур сохранения изменений данных представлений и процедур.

Список запросов может содержать объекты базы данных, SQL-код, http-запросы и запросы к текстовым файлам.

Все эти возможности могут быть настроены в базе данных, и SaveToDB Framework предлагает готовую инфраструктуру.

См. Настройка списка запросов, Настройка сохранения изменений.

Таблица данных списка запросов

Таблица SAVETODB_DEV.QUERY_LIST является дополнительным источником данных для представлений списков запросов.

CREATE TABLE SAVETODB_DEV.QUERY_LIST
(
  ID NUMBER,
  TABLE_SCHEMA VARCHAR2(30) NOT NULL,
  TABLE_NAME VARCHAR2(30) NOT NULL,
  TABLE_TYPE VARCHAR2(30) NOT NULL,
  TABLE_CODE NCLOB,
  INSERT_PROCEDURE NCLOB,
  UPDATE_PROCEDURE NCLOB,
  DELETE_PROCEDURE NCLOB,
  PROCEDURE_TYPE VARCHAR2(30),
  CONSTRAINT PK_QUERY_LIST
    PRIMARY KEY (ID)
)

Таблица позволяет:

  • Указать SQL-код в списке запросов.
    Код указывается в поле TABLE_CODE, в поле TABLE_TYPE должен быть указан тип CODE.
  • Указать http-запрос в списке запросов.
    Код указывается в поле TABLE_CODE, в поле TABLE_TYPE должен быть указан тип HTTP.
  • Указать запрос к текстовому файлу в списке запросов.
    Код указывается в поле TABLE_CODE, в поле TABLE_TYPE должен быть указан тип TEXT.
  • Указать таблицу сохранения данных, полученных из представлений, хранимых процедур или SQL-кода.
    Таблица должна быть указана во всех трех полях INSERT_PROCEDURE, UPDATE_PROCEDURE и DELETE_PROCEDURE.
  • Указать SQL код или хранимые процедуры для сохранения изменений данных, полученных из представлений, хранимых процедур или SQL-кода.
    Должны быть заполнены все три поля INSERT_PROCEDURE, UPDATE_PROCEDURE и DELETE_PROCEDURE.
  • Указать таблицу, SQL код или хранимые процедуры для слияния данных, полученных из любого источника, в том числе из веб или текстовых файлов.
    Должно быть заполнено одно поле INSERT_PROCEDURE.

См. Настройка списка запросов и Настройка сохранения данных.

Представление конфигурации списка запросов для разработчиков

Представление SAVETODB_DEV.VIEW_QUERY_LIST выводит список всех доступных пользователю объектов и данные из таблицы SAVETODB_DEV.QUERY_LIST.

Представление удобно использовать разработчикам приложений, т.к. показываются все объекты, в отличие от представления SAVETODB_XLS.VIEW_QUERY_LIST.

Технические детали

Представление использует системное представление SYS.ALL_OBJECTS для выбора процедур INSERT, UPDATE, DELETE.

Представление можно изменить на использование представления sys.obj$, что позволит значительно увеличить скорость работы.

Также можно использовать только таблицу SAVETODB_DEV.QUERY_LIST для задания процедур сохранения изменений, если текущие правила связывания процедур не подходят.

Исходный код представления SAVETODB_DEV.VIEW_QUERY_LIST:

CREATE OR REPLACE VIEW SAVETODB_DEV.VIEW_QUERY_LIST
(
    TABLE_SCHEMA,
    TABLE_NAME,
    TABLE_TYPE,
    TABLE_CODE,
    INSERT_PROCEDURE,
    UPDATE_PROCEDURE,
    DELETE_PROCEDURE,
    PROCEDURE_TYPE
)
AS
-- This code selects database objects
SELECT
    t.OWNER AS TABLE_SCHEMA
    , t.OBJECT_NAME AS TABLE_NAME
    , t.OBJECT_TYPE AS TABLE_TYPE
    , NULL AS TABLE_CODE

    -- Comment these lines if you select another way to get INSERT, UPDATE, and DELETE procedures
    , COALESCE(q.INSERT_PROCEDURE, CASE WHEN i.OBJECT_NAME IS NULL THEN NULL ELSE i.OWNER || '.' || i.OBJECT_NAME END) AS INSERT_PROCEDURE
    , COALESCE(q.UPDATE_PROCEDURE, CASE WHEN u.OBJECT_NAME IS NULL THEN NULL ELSE u.OWNER || '.' || u.OBJECT_NAME END) AS UPDATE_PROCEDURE
    , COALESCE(q.DELETE_PROCEDURE, CASE WHEN d.OBJECT_NAME IS NULL THEN NULL ELSE d.OWNER || '.' || d.OBJECT_NAME END) AS DELETE_PROCEDURE
    , NULL AS PROCEDURE_TYPE

    -- Use these lines if you use the sys.obj$ code
    --, COALESCE(q.INSERT_PROCEDURE, CASE WHEN i.NAME IS NULL THEN NULL ELSE t.OWNER || '.' || i.NAME END) AS INSERT_PROCEDURE
    --, COALESCE(q.UPDATE_PROCEDURE, CASE WHEN u.NAME IS NULL THEN NULL ELSE t.OWNER || '.' || u.NAME END) AS UPDATE_PROCEDURE
    --, COALESCE(q.DELETE_PROCEDURE, CASE WHEN d.NAME IS NULL THEN NULL ELSE t.OWNER || '.' || d.NAME END) AS DELETE_PROCEDURE
    --, NULL AS PROCEDURE_TYPE

    -- Use these lines if SAVETODB_DEV.QUERY_LIST is used only
    --, q.INSERT_PROCEDURE
    --, q.UPDATE_PROCEDURE
    --, q.DELETE_PROCEDURE
    --, q.PROCEDURE_TYPE
FROM
    SYS.ALL_OBJECTS t
    -- SAVETODB_DEV.QUERY_LIST contains manual data for INSERT_PROCEDURE, UPDATE_PROCEDURE, and DELETE_PROCEDURE
    LEFT OUTER JOIN SAVETODB_DEV.QUERY_LIST q ON q.TABLE_SCHEMA = t.OWNER AND q.TABLE_NAME = t.OBJECT_NAME

    -- You may comment these lines to use SAVETODB_DEV.QUERY_LIST only or sys.obj$. The view will run much faster
    LEFT OUTER JOIN SYS.ALL_OBJECTS i ON i.OWNER = t.OWNER AND i.OBJECT_NAME = REPLACE(t.OBJECT_NAME, '_SELECT', '') || '_INSERT'
    LEFT OUTER JOIN SYS.ALL_OBJECTS u ON u.OWNER = t.OWNER AND u.OBJECT_NAME = REPLACE(t.OBJECT_NAME, '_SELECT', '') || '_UPDATE'
    LEFT OUTER JOIN SYS.ALL_OBJECTS d ON d.OWNER = t.OWNER AND d.OBJECT_NAME = REPLACE(t.OBJECT_NAME, '_SELECT', '') || '_DELETE'

    -- You may use these lines instead of SYS.ALL_OBJECTS. The view will run faster
    -- INNER JOIN sys.user$ s ON s.NAME = t.OWNER
    -- LEFT OUTER JOIN sys.obj$ i ON i.TYPE# = 7 AND i.owner# = s.user# AND i.NAME = REPLACE(t.OBJECT_NAME, '_SELECT', '') || '_INSERT'
    -- LEFT OUTER JOIN sys.obj$ u ON u.TYPE# = 7 AND u.owner# = s.user# AND u.NAME = REPLACE(t.OBJECT_NAME, '_SELECT', '') || '_UPDATE'
    -- LEFT OUTER JOIN sys.obj$ d ON d.TYPE# = 7 AND d.owner# = s.user# AND d.NAME = REPLACE(t.OBJECT_NAME, '_SELECT', '') || '_DELETE'
WHERE
    t.OWNER NOT IN (
        'APEX_030200', 'APPQOSSYS', 'CTXSYS', 'DBSNMP', 'EXFSYS', 'FLOWS_FILES', 'IX', 'MDSYS', 'OLAPSYS',
        'ORDDATA', 'ORDSYS', 'ORDPLUGINS', 'OUTLN', 'OWBSYS', 'SYS', 'SYSTEM', 'SYSMAN', 'WMSYS', 'XDB'
        )
    AND t.OBJECT_TYPE IN ('TABLE', 'VIEW', 'PROCEDURE')
    AND t.OBJECT_NAME NOT LIKE '%_INSERT'
    AND t.OBJECT_NAME NOT LIKE '%_UPDATE'
    AND t.OBJECT_NAME NOT LIKE '%_DELETE'
    AND t.OBJECT_NAME NOT LIKE 'XL_%'
UNION ALL
-- This code selects non-database objects specified in the SAVETODB_DEV.QUERY_LIST table
SELECT
    q.TABLE_SCHEMA
    , q.TABLE_NAME
    , q.TABLE_TYPE
    , q.TABLE_CODE
    , q.INSERT_PROCEDURE
    , q.UPDATE_PROCEDURE
    , q.DELETE_PROCEDURE
    , q.PROCEDURE_TYPE
FROM
    SAVETODB_DEV.QUERY_LIST q
    LEFT OUTER JOIN SYS.ALL_OBJECTS t ON q.TABLE_SCHEMA = t.OWNER AND q.TABLE_NAME = t.OBJECT_NAME
WHERE
    q.TABLE_TYPE IN ('CODE', 'HTTP', 'TEXT')
    AND t.OBJECT_NAME IS NULL
ORDER BY
    TABLE_TYPE
    , TABLE_SCHEMA
    , TABLE_NAME;

Представление конфигурации списка запросов для пользователей

Представление SAVETODB_XLS.VIEW_QUERY_LIST выводит список объектов, доступных пользователю, за исключением объектов настройки плагина SaveToDB.

Представление позволяет просто реализовывать дополнительные представления списков запросов, что позволяет создавать логические списки запросов, содержащие только объекты, которые необходимо показать пользователям.

Например, в одной базе данных можно создать списки запросов для финансистов, бухгалтеров, менеджеров и т.д.

Пример пользовательского представления:

CREATE OR REPLACE VIEW HR.VIEW_QUERY_LIST
(
    TABLE_SCHEMA,
    TABLE_NAME,
    TABLE_TYPE,
    TABLE_CODE,
    INSERT_PROCEDURE,
    UPDATE_PROCEDURE,
    DELETE_PROCEDURE,
    PROCEDURE_TYPE
)
AS
SELECT
    t.TABLE_SCHEMA
    , t.TABLE_NAME
    , t.TABLE_TYPE
    , t.TABLE_CODE
    , t.INSERT_PROCEDURE
    , t.UPDATE_PROCEDURE
    , t.DELETE_PROCEDURE
    , t.PROCEDURE_TYPE
FROM
    SAVETODB_XLS.VIEW_QUERY_LIST t
WHERE
    t.TABLE_SCHEMA IN ('HR', 'SAVETODB_XLS')
    AND NOT t.TABLE_NAME IN (
        'ADD_JOB_HISTORY'
        , 'SECURE_DML'
        )

В примере представления отобраны объекты схем HR и SAVETODB_XLS и исключены объекты ADD_JOB_HISTORY и SECURE_DML.

Обработка событий

Назначение

Используя плагин SaveToDB к Microsoft Excel можно обрабатывать события Microsoft Excel хранимыми процедурами Oracle Database, заданным SQL-кодом или http-запросами:

  • Change
  • DoubleClick
  • SelectionChange

За счет этого можно изменять любые данные базы данных из Microsoft Excel, реализовывать уточняющие запросы, логику Master-Details и т.д.

Также можно настроить контекстное меню Microsoft Excel и меню "Действия" плагина для запуска:

  • представлений,
  • хранимых процедур,
  • SQL-кода,
  • http-запросов,
  • запросов к текстовым файлам,
  • макросов,
  • команд Windows Shell и CMD,
  • обновления справочников Excel из баз данных.

См. Настройка обработчиков событий.

Таблица данных обработчиков событий

Таблица SAVETODB_DEV.EVENT_HANDLERS содержит конфигурацию обработчиков событий.

CREATE TABLE SAVETODB_DEV.EVENT_HANDLERS
(
  ID NUMBER,
  TABLE_SCHEMA VARCHAR2(30) NOT NULL,
  TABLE_NAME VARCHAR2(30) NOT NULL,
  COLUMN_NAME VARCHAR2(30),
  EVENT_NAME VARCHAR2(11) NOT NULL,
  HANDLER_SCHEMA VARCHAR2(30),
  HANDLER_NAME VARCHAR2(256) NOT NULL,
  HANDLER_TYPE VARCHAR2(30),
  HANDLER_CODE NCLOB,
  TARGET_WORKSHEET VARCHAR2(256),
  MENU_ORDER NUMBER(3,0),
  EDIT_PARAMETERS NUMBER(1,0),
  CONSTRAINT PK_EVENT_HANDLERS
    PRIMARY KEY (ID)
);

Описание полей конфигурации см. в разделе Настройка обработчиков событий.

Поле HANDLER_CODE может содержать SQL-код или текст http-запросов.

Рекомендуемый формат имен обработчиков событий:

  • XL_<EVENT>_<SCHEMA>_<NAME>
  • XL_<EVENT>_<SCHEMA>_<NAME>_<COLUMN>

где <SCHEMA>_<NAME> - имя объекта, к которому относится обработчик, а <EVENT> принимает акронимы событий:

  • ACT - Actions
  • CHG - Change
  • DBL - DoubleClick
  • MNU - ContextMenu
  • SEL - SelectionChange

Объекты с именами XL_% автоматически исключаются из списков запросов.

Представление конфигурации обработчиков событий

Представление SAVETODB_XLS.VIEW_EVENT_HANDLERS используется для настройки плагина и просто выбирает данные из таблицы SAVETODB_DEV.EVENT_HANDLERS.

CREATE OR REPLACE VIEW SAVETODB_XLS.VIEW_EVENT_HANDLERS
(
    ID,
    TABLE_SCHEMA,
    TABLE_NAME,
    COLUMN_NAME,
    EVENT_NAME,
    HANDLER_SCHEMA,
    HANDLER_NAME,
    HANDLER_TYPE,
    HANDLER_CODE,
    TARGET_WORKSHEET,
    MENU_ORDER,
    EDIT_PARAMETERS
)
AS
SELECT
    t.ID,
    t.TABLE_SCHEMA,
    t.TABLE_NAME,
    t.COLUMN_NAME,
    t.EVENT_NAME,
    t.HANDLER_SCHEMA,
    t.HANDLER_NAME,
    t.HANDLER_TYPE,
    t.HANDLER_CODE,
    t.TARGET_WORKSHEET,
    t.MENU_ORDER,
    t.EDIT_PARAMETERS
FROM
    SAVETODB_DEV.EVENT_HANDLERS t;

Поле ID не является обязательным для конфигурации плагина, но его удобно использовать в представлении для обеспечения возможности сохранения изменений и использования в веб-сервисах OData.

Перевод данных

Назначение

Плагин SaveToDB позволяет переводить описания объектов базы данных и полей/параметров объектов на бизнес-язык пользователей или любой естественный язык в самом Microsoft Excel после загрузки запроса.

Это позволяет менять перевод полей в специальной таблице базы данных, не меняя сами объекты базы данных.

См. Настройка перевода данных.

Таблица данных перевода объектов базы данных

Таблица SAVETODB_DEV.OBJECT_TRANSLATION содержит данные перевода объектов.

CREATE TABLE SAVETODB_DEV.OBJECT_TRANSLATION
(
  ID NUMBER,
  TABLE_SCHEMA VARCHAR2(30) NOT NULL,
  TABLE_NAME VARCHAR2(30) NOT NULL,
  LANGUAGE_NAME CHAR(2) NOT NULL,
  TRANSLATED_NAME NVARCHAR2(61),
  TRANSLATED_DESC NVARCHAR2(256),
  TRANSLATED_COMMENT NVARCHAR2(2000),
  CONSTRAINT PK_OBJECT_TRANSLATION
    PRIMARY KEY (ID)
);

CREATE UNIQUE INDEX SAVETODB_DEV.IX_OBJECT_TRANSLATION_S_N_L
  ON SAVETODB_DEV.OBJECT_TRANSLATION (
  TABLE_SCHEMA,
  TABLE_NAME,
  LANGUAGE_NAME
);

Описание полей см. в разделе Настройка перевода данных.

Можно изменить разрядность полей TRANSLATED_*, если требуются описания большей длины.

Представление конфигурации перевода объектов базы данных

Представление SAVETODB_XLS.VIEW_OBJECT_TRANSLATION используется для настройки плагина и просто выбирает данные из таблицы SAVETODB_DEV.OBJECT_TRANSLATION.

CREATE OR REPLACE VIEW SAVETODB_XLS.VIEW_OBJECT_TRANSLATION
(
  ID,
  TABLE_SCHEMA,
  TABLE_NAME,
  LANGUAGE_NAME,
  TRANSLATED_NAME,
  TRANSLATED_DESC,
  TRANSLATED_COMMENT
)
AS
  SELECT
    t.ID,
    t.TABLE_SCHEMA,
    t.TABLE_NAME,
    t.LANGUAGE_NAME,
    t.TRANSLATED_NAME,
    t.TRANSLATED_DESC,
    t.TRANSLATED_COMMENT
  FROM
    SAVETODB_DEV.OBJECT_TRANSLATION t
  ORDER BY
    t.LANGUAGE_NAME,
    t.TABLE_SCHEMA,
    t.TABLE_NAME;

Поле ID не является обязательным для конфигурации плагина, но его удобно использовать в представлении для обеспечения возможности сохранения изменений и использования в веб-сервисах OData.

Таблица данных перевода полей и параметров

Таблица SAVETODB_DEV.COLUMN_TRANSLATION содержит данные перевода полей и параметров объектов базы данных.

CREATE TABLE SAVETODB_DEV.COLUMN_TRANSLATION
(
  ID NUMBER,
  TABLE_SCHEMA VARCHAR2(30),
  TABLE_NAME VARCHAR2(30),
  COLUMN_NAME VARCHAR2(30) NOT NULL,
  LANGUAGE_NAME CHAR(2) NOT NULL,
  TRANSLATED_NAME NVARCHAR2(61),
  TRANSLATED_DESC NVARCHAR2(1024),
  CONSTRAINT PK_COLUMN_TRANSLATION
    PRIMARY KEY (ID)
);

CREATE UNIQUE INDEX SAVETODB_DEV.IX_COLUMN_TRANSLATION_S_N_C_L
    ON SAVETODB_DEV.COLUMN_TRANSLATION (
    TABLE_SCHEMA,
    TABLE_NAME,
    COLUMN_NAME,
    LANGUAGE_NAME
);

Описание полей см. в разделе Настройка перевода данных.

Представление конфигурации перевода полей и параметров

Представление SAVETODB_XLS.VIEW_COLUMN_TRANSLATION используется для настройки плагина и просто выбирает данные из таблицы SAVETODB_DEV.COLUMN_TRANSLATION.

CREATE OR REPLACE VIEW SAVETODB_XLS.VIEW_COLUMN_TRANSLATION
(
  ID,
  TABLE_SCHEMA,
  TABLE_NAME,
  COLUMN_NAME,
  LANGUAGE_NAME,
  TRANSLATED_NAME,
  TRANSLATED_DESC
)
AS
  SELECT
    t.ID,
    t.TABLE_SCHEMA,
    t.TABLE_NAME,
    t.COLUMN_NAME,
    t.LANGUAGE_NAME,
    t.TRANSLATED_NAME,
    t.TRANSLATED_DESC
  FROM
    SAVETODB_DEV.COLUMN_TRANSLATION t
  ORDER BY
    t.TABLE_SCHEMA,
    t.TABLE_NAME,
    t.COLUMN_NAME;

Поле ID не является обязательным для конфигурации плагина, но его удобно использовать в представлении для обеспечения возможности сохранения изменений и использования в веб-сервисах OData.

Представление описания объектов

Представление SAVETODB_XLS.VIEW_OBJECT_DESCRIPTION выводит информацию о доступных пользователю объектах БД, для которых есть описание в таблице SAVETODB_DEV.OBJECT_TRANSLATION.

Такое представление удобно использовать как начальную страницу приложений, с которой пользователь может переключиться на любой интересующий объект, используя Список запросов на ленте.

Сервисные процедуры

В файле bonus-translation.sql находится несколько процедур для заполнения таблиц перевода данными на основе мета-информации базы данных.

Значения параметров

Назначение

Используя плагин SaveToDB пользователи могут работать в Microsoft Excel с хранимыми процедурами и запросами в виде SQL кода так же, как с таблицами или представлениями.

Если хранимая процедура или SQL код имеет параметры, то плагин SaveToDB выводит параметры на ленту и пользователи могут изменять значения.

Для таблиц и представлений пользователи могут выбрать поля, которые будут показаны на ленте и использоваться при формировании запроса WHERE.

Используя настройку в базе данных можно задать представления, хранимые процедуры или SQL код, которые будут использоваться для формирования списков значений полей и параметров.

См. Настройка значений параметров.

Таблица конфигурации запросов значений параметров

Таблица SAVETODB_DEV.PARAMETER_VALUES служит источником данных для представления конфигурации SAVETODB_XLS.VIEW_PARAMETER_VALUES.

CREATE TABLE SAVETODB_DEV.PARAMETER_VALUES
(
  ID NUMBER NOT NULL,
  TABLE_SCHEMA VARCHAR2(30) NOT NULL,
  TABLE_NAME VARCHAR2(30) NOT NULL,
  PARAMETER_NAME VARCHAR2(30) NOT NULL,
  SELECT_SCHEMA VARCHAR2(30),
  SELECT_NAME VARCHAR2(30) NOT NULL,
  SELECT_TYPE VARCHAR2(10),
  SELECT_CODE NCLOB,
  CONSTRAINT PK_PARAMETER_VALUES
    PRIMARY KEY (ID)
);

CREATE UNIQUE INDEX SAVETODB_DEV.IX_PARAMETER_VALUES_S_N_P
  ON SAVETODB_DEV.PARAMETER_VALUES (
    TABLE_SCHEMA,
    TABLE_NAME,
    PARAMETER_NAME
);

Описание полей см. в разделе Настройка значений параметров.

Рекомендуемый формат имен объектов запроса значений SELECT_NAME параметров PARAMETER_NAME:

  • XL_VAL_<PARAMETER_NAME>

Объекты с такими именами автоматически исключаются из списков запросов.

Поле SELECT_CODE может содержать SQL-код. При этом в поле SELECT_TYPE должен быть указан тип CODE.

Представление конфигурации значений параметров

Представление SAVETODB_XLS.VIEW_PARAMETER_VALUES используется для настройки плагина и просто выбирает данные из таблицы SAVETODB_DEV.PARAMETER_VALUES.

CREATE OR REPLACE VIEW SAVETODB_XLS.VIEW_PARAMETER_VALUES
(
    ID,
    TABLE_SCHEMA,
    TABLE_NAME,
    PARAMETER_NAME,
    SELECT_SCHEMA,
    SELECT_NAME,
    SELECT_TYPE,
    SELECT_CODE
)
AS
SELECT
    t.ID,
    t.TABLE_SCHEMA,
    t.TABLE_NAME,
    t.PARAMETER_NAME,
    t.SELECT_SCHEMA,
    t.SELECT_NAME,
    t.SELECT_TYPE,
    t.SELECT_CODE
FROM
    SAVETODB_DEV.PARAMETER_VALUES t;

Поле ID не является обязательным для конфигурации плагина, но его удобно использовать в представлении для обеспечения возможности сохранения изменений и использования в веб-сервисах OData.

См. раздел Настройка значений параметров.

Форматы таблиц

Назначение

Данный компонент позволяет сохранять и восстанавливать форматирование таблиц Microsoft Excel для объектов БД в базе данных.

Форматирование таблицы загружается при первом подключении к объекту.
За счет этого пользователь получает не только данные, но и полное форматирование, включая:

  • форматы ячеек,
  • условное форматирование,
  • колонки формул,
  • строки итогов,
  • примененные авто-фильтры,
  • настройки печати,
  • настройки окна,
  • видимость колонок,
  • пользовательские виды таблиц.

Управление форматами производится из Мастера управления форматами таблиц.

См. также Настройка форматов таблиц.

Таблица форматов

Таблица SAVETODB_DEV.TABLE_FORMATS хранит форматирование таблиц Microsoft Excel для объектов базы данных.

CREATE TABLE SAVETODB_DEV.TABLE_FORMATS
(
  ID NUMBER,
  TABLE_SCHEMA VARCHAR2(30) NOT NULL,
  TABLE_NAME VARCHAR2(30) NOT NULL,
  TABLE_EXCEL_FORMAT_XML NCLOB,
  CONSTRAINT PK_TABLE_FORMATS
    PRIMARY KEY (ID)
);

CREATE UNIQUE INDEX SAVETODB_DEV.IX_TABLE_FORMATS_S_N
  ON SAVETODB_DEV.TABLE_FORMATS (
  TABLE_SCHEMA,
  TABLE_NAME
);

Данные таблицы управляются плагином при сохранении из Мастера управления форматами таблиц с использованием процедуры SAVETODB_DEV.TABLE_FORMAT_UPDATE.

Представление конфигурации форматов

Представление SAVETODB_XLS.VIEW_TABLE_FORMATS используется плагином для выборки сохраненных форматов таблиц и просто выбирает данные из таблицы SAVETODB_DEV.TABLE_FORMATS.

CREATE OR REPLACE VIEW SAVETODB_XLS.VIEW_TABLE_FORMATS
(
  TABLE_SCHEMA,
  TABLE_NAME,
  TABLE_EXCEL_FORMAT_XML
)
AS
  SELECT
    TABLE_SCHEMA,
    TABLE_NAME,
    TABLE_EXCEL_FORMAT_XML
  FROM
    SAVETODB_DEV.TABLE_FORMATS;

Поле ID не является обязательным для конфигурации плагина, но его удобно использовать в представлении для обеспечения возможности сохранения изменений и использования в веб-сервисах OData.

Процедура сохранения форматов

Процедура SAVETODB_DEV.TABLE_FORMAT_UPDATE используется плагином SaveToDB для сохранения или удаления форматов таблиц в таблице SAVETODB_DEV.TABLE_FORMATS.

Объявление процедуры:

CREATE PROCEDURE SAVETODB_DEV.TABLE_FORMAT_UPDATE (
    Schema IN NVARCHAR2,
    Name IN NVARCHAR2,
    ExcelFormatXML NCLOB
    )

История изменений

Версия 7.2 от 20.03.2017

[*] Новые типы обработчиков событий: ConvertFormulas и DoNotConvertFormulas.
[*] Добавлены списки проверки значений в таблицы QUERY_LIST, EVENT_HANDLERS, PARAMETER_VALUES и их представления.
[*] Поле EVENT_HANDLERS.HANDLER_NAME может содержать значения NULL.

Версия 7.1 от 03.02.2017

[*] Добавлены типы RANGE и VALUES в поле SELECT_TYPE.
[*] Добавлены типы RANGE и VALUES в поле HANDLER_TYPE.

Версия 7.0 от 17.01.2017

[*] Обновлены командные файлы и файлы readme.txt.
SQL-код объектов SaveToDB Framework версии 6.9 остался неизменным.

Версия 6.9 от 21.06.2016

[+] Новый тип обработчика событий: ProtectRows.

Версия 6.7 от 14.04.2016

[*] Фреймворк включает обновленный список значений колонки EVENT_NAME таблиц конфигурации обработчиков событий.
Используйте файл savetodb-framework-62-upgrade-to-67.sql для обновления версий 6.2.
После обновления используйте Мастер управления форматами таблиц для перезагрузки списков в существующие таблицы Excel.
Также можно создать новые книги настройки, используя Мастер генерации книги настройки.

Версия 6.2 от 23.12.2015

[+] Новые типы обработчиков событий: DoNotSelect, DoNotSave, DoNotChange, Formula, FormulaValue, ValidationList.
[*] В представлении SAVETODB_DEV.VIEW_QUERY_LIST исключаются объекты с именами в формате '%_change'.
[*] Для обновления SaveToDB Framework 5.0 можно использовать код в каталоге "SaveToDB Framework Upgrade 5.0 to 6.2".

Версия 5.2 от 12.05.2015

[*] Обновлены командные файлы.
[*] Процедуры с суффиксом _MERGE исключаются из вывода в представлениях SAVETODB_DEV.VIEW_QUERY_LIST и SAVETODB_XLS.VIEW_QUERY_LIST.

Версия 5.0 от 13.04.2015

[*] В таблицу SAVETODB_DEV.QUERY_LIST и представления VIEW_QUERY_LIST добавлены поля TABLE_CODE и PROCEDURE_TYPE.
[*] Типы полей INSERT_PROCEDURE, UPDATE_PROCEDURE, DELETE_PROCEDURE изменены на NCLOB, чтобы было можно хранить большой SQL код.
[*] В таблицу SAVETODB_DEV.EVENT_HANDLERS и представление SAVETODB_XLS.VIEW_EVENT_HANDLERS добавлено поле HANDLER_CODE.
[*] В таблицу SAVETODB_DEV.PARAMETER_VALUES и представление SAVETODB_XLS.VIEW_PARAMETER_VALUES добавлено поле SELECT_CODE.
[*] Поля SPECIFIC_SCHEMA и SPECIFIC_NAME таблицы SAVETODB_DEV.PARAMETER_VALUES и представления SAVETODB_XLS.VIEW_PARAMETER_VALUES переименованы в TABLE_SCHEMA и TABLE_NAME.
[*] Типы полей TABLE_SCHEMA и HANDLER_SCHEMA изменены на VARCHAR2(30).

Версия 4.8 от 27.08.2014

[-] Исправлены ошибки кодировки при выводе сообщений в командных файлах.
Все командные файлы переведены на кодировку CP866.

Версия 4.7 от 15.07.2014

[*] Командные файлы обновлены на использование утилиты командной строки gsqlcmd.exe вместо sqlplus.exe.
Вследствие этого, операции установки и удаления можно совершать без предустановленных компонент Oracle.
[-] Исправлена проблема кодировки представления SAVETODB_DEV.VIEW_QUERY_LIST и прав на чтение для SAVETODB_XLS.VIEW_QUERY_LIST.

Версия 4.0 от 13.12.2013

[*]Размер полей INSERT_PROCEDURE, UPDATE_PROCEDURE, DELETE_PROCEDURE таблицы SAVETODB_DEV.QUERY_LIST увеличен до 2000 символов.
Эти поля могут содержать SQL код для сохранения изменений. Размер полей можно увеличить по необходимости.
[*]Изменено представление SAVETODB_DEV.VIEW_QUERY_LIST.
Представление выводит процедуры INSERT_PROCEDURE, UPDATE_PROCEDURE, DELETE_PROCEDURE для объектов базы данных из таблицы SAVETODB_DEV.QUERY_LIST.
Это изменение значительно увеличивает производительность вывода, но требует внесения процедур сохранения изменений в таблицу SAVETODB_DEV.QUERY_LIST.
Преставление выводит запросы в виде SQL-кода, запросы к веб и текстовым файлам (типы CODE, HTTP, TEXT) из таблицы SAVETODB_DEV.QUERY_LIST.
[*]Изменено представление SAVETODB_XLS.VIEW_QUERY_LIST.
Оно фильтрует данные из представления SAVETODB_DEV.VIEW_QUERY_LIST, скорость вывода которого значительно увеличилась.
[*]Размер поля TARGET_WORKSHEET таблицы SAVETODB_DEV.EVENT_HANDLERS увеличен до 256 символов.
Поле может содержать список листов для обновления справочников для обработчика REFRESH.
[*]В таблицы SAVETODB_DEV.PARAMETER_VALUES, SAVETODB_DEV.OBJECT_TRANSLATION, SAVETODB_DEV.COLMN_TRANSLATION, SAVETODB_DEV.TABLE_FORMATS добавлены уникальные индексы.
[*]В меню "Действия" добавлены ссылки на онлайн документацию для таблиц и представлений SaveToDB Framework for Oracle Database.

Версия 3.0 от 10.06.2013

[!]Переименованы объекты фреймворка для приведения имен к единому образцу. См. таблицу ниже.
[+]Добавлена возможность установки и удаления SaveToDB Framework непосредственно из Microsoft Excel, а также отдельным установщиком SaveToDB Framework Installer.
[+]В плагин SaveToDB добавлена возможность генерации книги для настройки всех конфигурационных таблиц SaveToDB Framework
[*]Добавлены поля в таблицу SAVETODB_DEV.EVENT_HANDLERS и представление конфигурации обработчиков SAVETODB_XLS.VIEW_EVENT_HANDLERS для настройки новых возможностей SaveToDB 3.0.
[*]Увеличена размерность полей перевода в таблицах перевода объектов SAVETODB_DEV.OBJECT_TRANSLATION и колонок SAVETODB_DEV.COLUMN_TRANSLATION.
[*]Добавлено представление SAVETODB_DEV.VIEW_QUERY_LIST, которое не исключает объекты SaveToDB Framework.
Представление удобно использовать для подключения к объектам SaveToDB Framework разработчиками приложений.
[*]Добавлена таблица SAVETODB_DEV.QUERY_LIST, которую можно использовать для добавления SQL-кода или http-запросов в списки запросов, а также для указания таблицы сохранения данных из представлений и процедур встроенными процедурами плагина SaveToDB.
Таблица является дополнительным источником информации для представлений списков запросов SAVETODB_DEV.VIEW_QUERY_LIST и SAVETODB_XLS.VIEW_QUERY_LIST.
[*]Изменено представление конфигурации объектов запроса значений параметров SAVETODB_XLS.VIEW_PARAMETER_VALUES.
Значения выбираются из новой таблицы SAVETODB_DEV.PARAMETER_VALUES.
Таким образом, все представления конфигурации выбирают значения из соответствующих таблиц.
[*]Добавлено представление SAVETODB_XLS.VIEW_OBJECT_DESCRIPTION, которое выводит информацию о доступных пользователю объектах из таблицы SAVETODB_DEV.OBJECT_TRANSLATION. Удобно использовать это представление как начальную таблицу в книгах Excel.
[*]Документация перенесена из файлов readme.htm и *.sql в этот файл.

Переименование основных объектов SaveToDB Framework:

SaveToDB Framework 2.0SaveToDB Framework 3.0
SAVETODB_DEV.TRANSLATION_OBJECTSSAVETODB_DEV.OBJECT_TRANSLATION
SAVETODB_DEV.TRANSLATION_COLUMNSSAVETODB_DEV.COLUMN_TRANSLATION
SAVETODB_DEV.EXCEL_EVENT_HANDLERSSAVETODB_DEV.EVENT_HANDLERS
SAVETODB_DEV.EXCEL_TABLE_FORMATSSAVETODB_DEV.TABLE_FORMATS
SAVETODB_XLS.VIEW_TRANSLATION_OBJECTSSAVETODB_XLS.VIEW_OBJECT_TRANSLATION
SAVETODB_XLS.VIEW_TRANSLATION_COLUMNSSAVETODB_XLS.VIEW_COLUMN_TRANSLATION
SAVETODB_XLS.VIEW_EXCEL_EVENT_HANDLERSSAVETODB_XLS.VIEW_EVENT_HANDLERS
SAVETODB_XLS.VIEW_EXCEL_TABLE_FORMATSSAVETODB_XLS.VIEW_TABLE_FORMATS
SAVETODB_XLS.VIEW_PARAMETER_VALUES_QUERIESSAVETODB_XLS.VIEW_PARAMETER_VALUES
SAVETODB_DEV.EXCEL_TABLE_FORMAT_UPDATESAVETODB_DEV.TABLE_FORMAT_SAVE

Системные требования

Поддерживаемые версии SaveToDB:

  • SaveToDB 6.x и выше
  • SaveToDB 5.x, без новых возможностей SaveToDB 6.x-7.x

Поддерживаемые версии Oracle Database:

  • Oracle Database 10g Release 1
  • Oracle Database 10g Release 2
  • Oracle Database 11g Release 1
  • Oracle Database 11g Release 2
  • Oracle Database 12c Release 1

См. также Системные требования к плагину SaveToDB.

Примеры для Oracle Database

SaveToDB SDK включает исходный код и рабочие книги Microsoft Excel приложений и примеров для СУБД Oracle Database.

Приложение Реестр платежей

Это готовое к использованию приложение позволяет вести реестр платежей и строить отчеты о движении денежных средств.

Приложение является комплексным примером полноценного приложения, реализованного с помощью Microsoft Excel и Oracle Database.

Пример Oracle HR

В примере Oracle HR представлены типовые решения следующих задач:

  • Переключение запросов к базе данных (таблицы, представления или хранимые процедуры) на одном листе с использованием списка запросов на ленте Microsoft Excel.
  • Формирование списка видимых пользователю запросов (таблиц, представлений и хранимых процедур) для выбора на ленте Microsoft Excel.
  • Изменение параметров запуска хранимых процедур запроса через параметры на ленте.
  • Формирование списка значений параметров хранимых процедур для выбора на ленте.
  • Обновление значений именованных ячеек Microsoft Excel при обновлении запроса.
  • Сохранение и восстановление форматирования таблиц данных запросов при переключениях запросов.
  • Сохранение и восстановление формульных столбцов Microsoft Excel при переключении запросов.
  • Сохранение изменений в плоских таблицах без программирования, "из коробки".
  • Сохранение изменений в нормализованных таблицах за счет использования хранимых процедур.
  • Сохранение в базе данных изменения значений формульных столбцов Microsoft Excel.
  • Обработка событий изменения значений и двойного щелчка в Microsoft Excel серверными процедурами.
  • Встраивание контекстных запросов к базе данных в контекстное меню Microsoft Excel.
  • Переключение вида таблицы (видимые строки и колонки) из меню.
  • Перевод на "бизнес-язык" и аннотирование объектов и полей объектов базы данных при выводе в Microsoft Excel.

Фактически, представлен достаточно полный стек для построения готовых решений с ожидаемыми пользователями возможностями.

При этом вся разработка ведется на серверной стороне, и система может модифицироваться независимо от клиентской части и файла Microsoft Excel.

Пример развертывается в готовую схему HR базы данных примера Oracle Database.

Установка и удаление примеров приложений

Установка примеров приложений Oracle Database

Для развертывания примера следует выполнить следующие шаги:

  1. Установить базу данных примера приложения.
  2. Изменить данные подключения в книге Microsoft Excel примера.

Установка базы данных примера

Код развертывания базы данных примеров Oracle Database находится в папке "source code" соответствующего примера.

Откройте папку и выполните следующие командные файлы:

  1. Запустите 1-edit-config.cmd и настройте строку подключения "setup".
  2. Запустите 2-edit-grants.cmd и измените права, если необходимо.
  3. Запустите 3-install-savetodb-framework.cmd для установки SaveToDB Framework for Oracle Database.
  4. Запустите 4-install-application.cmd для установки приложения.
  5. Запустите 5-clear-credentials.cmd и удалите пароль подключения "setup".

На шаге 1 выбирается сервер и база данных для установки примера, а также пользователь операций установки.

Пользователь строки подключения "setup" должен обладать правами администратора.

Вместо удаления пароля в строке подключения на шаге 5, можно зашифровать строку:
выберите опцию "Только пользователь" в программе gConnectionManager.

Пример также можно установить вручную, используя файл application-install.sql.

Изменение параметров подключения в рабочей книге Microsoft Excel

В папке примеров содержатся предварительно настроенные рабочие книги Microsoft Excel для конечных пользователей и разработчиков приложений.

После развертывания примера следует изменить данные подключения на фактический сервер и базу данных установки примера.

Также, в процессе развертывания могли быть изменены имена и пароли тестовых пользователей приложения.

Для изменения параметров подключения следует:

  1. Активировать вкладку SaveToDB и запустить "Мастер изменения строк подключения".
  2. Ввести новые параметры сервера и базы данных и нажать кнопку "Далее".
  3. Отметить все таблицы и нажать кнопку "Готово".

Далее следует обновить данные всех таблиц рабочей книги Microsoft Excel.

Это можно сделать, используя пункт меню "Обновить, Обновить все таблицы книги".

Возможно, более простым подходом будет конфигурирование сервиса Orcl для доступа к Вашей тестовой базе данных.

Имена и пароли пользователей в рабочих книгах Microsoft Excel:

ПримерЛогин разработчикаПароль разработчикаЛогин пользователяПароль пользователя
Oracle HRSAVETODB_DEMO_DEVDev_2011#_Xls4168SAVETODB_DEMO_USERUsr_2011#_Xls4168
Реестр платежейPAYMENTS_DEVDev_2011#_Xls4168PAYMENTS_USERUsr_2011#_Xls4168

Удаление примеров приложений Oracle Database

Для удаления откройте папку "source code" соответствующего примера и выполните следующие командные файлы:

  1. Запустите 1-edit-config.cmd и настройте строку подключения "setup".
  2. Запустите application-remove.cmd.
  3. Запустите 5-clear-credentials.cmd и удалите пароль подключения "setup".

Пользователь строки подключения "setup" должен обладать правами администратора.

Вместо удаления пароля в строке подключения на шаге 3, можно зашифровать строку:
выберите опцию "Только пользователь" в программе gConnectionManager.

Пример также можно удалить вручную, используя файл application-remove.sql.

Утилита командной строки gsqlcmd

Командные файлы установки и удаления примеров используют утилиту командной строки gsqlcmd,
которая позволяет выполнять SQL код и экспортировать данные на всех поддерживаемых платформах баз данных.

Утилита устанавливается в составе SaveToDB и доступна через переменную среды PATH,
соответственно, приложения могут быть установлены из любого каталога.

В составе SaveToDB SDK утилита находится в подкаталоге gsqlcmd и доступна из только подкаталогов SaveToDB SDK.

История изменений

Версия 7.2 от 20.03.2017

[*] Обновлен SaveToDB Framework 7.2.

Версия 7.0 от 17.01.2017

[*] Обновлены даты на 2017 год.
[*] Обновлены SaveToDB Framework 7.0, командные файлы и файлы readme.txt.

Системные требования

Поддерживаемые версии SaveToDB:

  • SaveToDB 5.x и выше

Поддерживаемые версии SaveToDB Framework for Oracle Database:

  • SaveToDB Framework 5.0 for Oracle Database и выше

Поддерживаемые версии Oracle Database:

  • Oracle Database 10g Release 1
  • Oracle Database 10g Release 2
  • Oracle Database 11g Release 1
  • Oracle Database 11g Release 2
  • Oracle Database 12c Release 1