Настройка сохранения изменений

Настройка сохранения изменений

Введение

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

Плагин поддерживает следующие сценарии:

Источник данныхВариант сохраненияЗапуск
Таблица базы данныхСохранение таблиц по умолчаниюКнопка Save
Представление, процедура или SQL-кодСохранение в базовую таблицуКнопка Save
Представление, процедура или SQL-кодСохранение SQL-кодомКнопка Save
Представление, процедура или SQL-кодСохранение хранимыми процедурамиКнопка Save
OData EntitySetСохранение OData по умолчаниюКнопка Save
http-запрос или текстовый файлСлияние в базовую таблицуКнопка Save
http-запрос или текстовый файлСлияние SQL-кодомКнопка Save
http-запрос или текстовый файлСлияние хранимой процедуройКнопка Save
Любой источник данныхСохранение обработчиком событийСобытие Change
Любой источник данныхМастер публикацииЗапуск мастера
Любой источник данныхМастер слиянияЗапуск мастера

Сценарии делятся на три большие группы:

  1. Сохранение по кнопке "Сохранить" (Save).
  2. Сохранение изменений по событию изменения ячейки Change за счет серверного обработчика событий.
  3. Публикация данных или слияние данных с применением соответствующего мастера.

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

В зависимости от источника данных возможны два принципиально разных варианта сохранения данных:

  1. Сохранение изменений, включая вставку новых, обновление существующих и удаление удаленных записей.
  2. Слияние данных, включая вставку новых записей и обновление существующих.

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

Варианты реализации сохранения или слияния делятся на следующие группы:

  1. Сохранение данных таблиц или OData EntitySet, работающее по умолчанию.
  2. Сохранение или слияние данных в базовую таблицу встроенными процедурами.
  3. Сохранение или слияние данных за счет хранимых процедур.
  4. Сохранение или слияние данных за счет SQL-кода.

Сохранение данных OData и за счет хранимых процедур требует редакции SaveToDB Standard, Enterprise или пробной версии.

Для редактируемых запросов плагин SaveToDB сохраняет информацию, необходимую для последующей генерации запросов на изменение данных, на скрытых листах книги.
При этом книга может быть закрыта и открыта сколько угодно раз. Листы данных вставляются в книгу при подключении к данным или в настройках плагина.

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

Настройка выполняется представлением списка запросов, который задается для каждого объекта в Мастере подключения к данным.

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

Представления* списка запросов должны содержать только следующие восемь полей:

  1. TABLE_SCHEMA
  2. TABLE_NAME
  3. TABLE_TYPE
  4. TABLE_CODE
  5. INSERT_PROCEDURE
  6. UPDATE_PROCEDURE
  7. DELETE_PROCEDURE
  8. PROCEDURE_TYPE

* Для Microsoft SQL Server Compact используются таблицы, а не представления. Начиная с версии 7.0, также могут использоваться таблицы, а не представления.

Первым полем представления может быть поле идентификатора.

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

Формат представления:

TABLE_SCHEMATABLE_NAMETABLE_TYPETABLE_CODEINSERT_PROCEDUREUPDATE_PROCEDUREDELETE_PROCEDUREPROCEDURE_TYPE
<Схема таблицы><Имя таблицы>TABLE [<Процедура>
/<SQL-код>]
[<Процедура>
/<SQL-код>]
[<Процедура>
/<SQL-код>]
[PROCEDURE
/CODE]
<Схема представления><Имя представления>VIEW [<Таблица>
/<Процедура>
/<SQL-код>]
[<Таблица>
/<Процедура>
/<SQL-код>]
[<Таблица>
/<Процедура>
/<SQL-код>]
[TABLE
/PROCEDURE
/CODE]
<Схема процедуры><Имя процедуры>PROCEDURE [<Таблица>
/<Процедура>
/<SQL-код>]
[<Таблица>
/<Процедура>
/<SQL-код>]
[<Таблица>
/<Процедура>
/<SQL-код>]
[TABLE
/PROCEDURE
/CODE]
<Схема объекта><Имя SQL-кода>CODE<SQL-код>[<Таблица>
/<Процедура>
/<SQL-код>]
[<Таблица>
/<Процедура>
/<SQL-код>]
[<Таблица>
/<Процедура>
/<SQL-код>]
[TABLE
/PROCEDURE
/CODE]
<Схема объекта><Имя http-запроса>HTTP<http-запрос>[<Таблица>
/<Процедура>
/<SQL-код>]
[<Таблица>][<Таблица>][TABLE
/PROCEDURE
/CODE]
<Схема объекта><Имя text-запроса>TEXT<Имя файла>
[;CodePage=<Код>]
[<Таблица>
/<Процедура>
/<SQL-код>]
[<Таблица>][<Таблица>][TABLE
/PROCEDURE
/CODE]

Поля TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE и TABLE_CODE относятся к объекту данных.

Поля INSERT_PROCEDURE, UPDATE_PROCEDURE и DELETE_PROCEDURE задают базовую таблицу, процедуры или SQL-код сохранения изменений.

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

Сохранение изменений в базовую таблицу

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

Например, следующая процедура выводит данные из одной таблицы:

CREATE PROCEDURE [xls].[uspStockHistory]
    @Symbol varchar(5) = 'YHOO'
AS
BEGIN
    SET NOCOUNT ON
    SELECT
        *
    FROM
        dbo.StockTradeHistory th
    WHERE
        th.Symbol = @Symbol
    ORDER BY
        th.[Date] DESC
END

Данные этой процедуры могут быть сохранены в базу данных, если указать в соответствующих полях таблицу dbo.StockTradeHistory.

Если базовая таблица указана для http-запросов или запросов к текстовым файлам, то сохранение выполняется слиянием.

Необходимые поля можно формировать формульными колонками Excel. Например, их исходного поля Name можно получить поля FirstName и LastName для сохранения.

Сохранение изменений с использованием SQL-кода и хранимых процедур

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

При сохранении данных плагин вызывает SQL-код или процедуру INSERT_PROCEDURE для новых записей в таблице Excel, UPDATE_PROCEDURE для измененных и DELETE_PROCEDURE для удаленных.

В режиме слияния данных SQL-код или процедура INSERT_PROCEDURE вызывается для всех записей таблицы. В этом случае логика слияния должна быть реализована в коде.

Значения параметров SQL-кода и хранимых процедур могут формироваться из различных источников. Наиболее приоритетный источник - значения из колонок таблицы Excel с соответствующим параметру наименованием.

Главное, чтобы имена параметров процедур и колонок таблицы Excel совпадали. Это накладывает определенные ограничения на имена полей редактируемых запросов.
Но нет никаких ограничений на переведенные имена полей, т.к. в процедурах используются наименования полей объекта базы данных.

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

Пример представления:

Встроенный запрос списка запросов плагина SaveToDB

Встроенный в плагин Список запросов по умолчанию использует окончания "_insert", "_update", "_delete" в наименованиях процедур для автоматического связывания процедур сохранения данных и базового объекта.
Если базовый объект содержит окончание "_select", то оно отбрасывается. Например, для объекта uspBudget_select автоматически определилась процедура вставки uspBudget_insert.

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

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

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

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

Создание конфигурации в базе данных

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

В состав SaveToDB Framework for Microsoft SQL Server также включена процедура генерации процедур INSERT, UPDATE, DELETE.

Этот веб-сайт использует куки. Продолжая использовать веб-сайт, Вы принимаете условия Cookie Policy.