Пример DBGate 02 - Продвинутые возможности DBGate

Этот пример демонстрирует продвинутые возможности DBGate для создания приложений.

Ниже приведена схема базы данных примера:

Диаграмма базы данных примера кассовой книги

SaveToDB Framework

SaveToDB Framework представляет собой набор таблиц для настройки приложений плагина SaveToDB для Microsoft Excel,
настольного приложения DBEdit и веб-приложений DBGate и DBGate.

Вы можете загрузить SaveToDB Framework для SQL Server, Oracle, MySQL и других платформ на странице SaveToDB SDK.

По ссылке приведена документация. Таблицы ниже содержат все настройки примера. Далее будут рассмотрены детали.

Форматы можно сохранять только в плагине SaveToDB. DBGate не использует таблицу xls.workbooks.

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

DBGate читает определения внешних ключей и создает списки значений для таблиц автоматически.

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

Обычно, пользователи не имеют разрешения VIEW DEFINITION, поэтому DBGate не имеет доступа к исходному SQL коду.

Для этого случая, разработчики могут настроить списки значений в таблице xls.handlers.

Ниже приведены примеры с разными списками значений для разного набора разрешений:

Обратите внимание на списки третьего примера. Списки компаний зависят от значения статьи.

Ниже приведены настройки для списков значений параметров и ячеек:

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

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

DBGate позволяет сохранять изменения данных таблиц по умолчанию.

Также DBGate автоматически определяет таблицу для представлений и процедур, если доступен SQL код объектов.

Примеры ниже используют эту возможность:

Разработчики могут вручную определить целевую таблицу в таблице xls.objects.

Сохранение изменений хранимыми процедурами

DBGate поддерживает сохранение изменений хранимыми процедурами для операций insert, update и delete.

Наиболее простой подход - это создать такие процедуры с суффиксами _insert, _update и _delete.
В этом случае, DBGate привязывает такие процедуры к базовому объекту автоматически.

Если в вашей базе данных используются другие принципы или желательно использовать единые процедуры
для нескольких объектов, то можно использовать таблицу xls.objects для настройки процедур.
Например, см. настройку для процедуры s02.usp_cashbook5.

Вы можете найти исходный код процедур сохранения в браузере кода ниже.

Вы можете генерировать такие процедуры, используя SaveToDB Developer Framework for SQL Server.
Вы можете загрузить его со страницы SaveToDB SDK. Для запуска процедур можно использовать плагин SaveToDB.

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

Сохранение изменений обработчиками событий изменения ячеек

DBGate позволяет использовать хранимые процедуры и SQL код для проверки и сохранения изменений.

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

В ином случае, требуется привязка обработчика в таблице xls.handlers. См. пример для процедуры s02.usp_cashbook3.

Обратите внимание на слово _Commit в поле TARGET_WORKSHEET.
Оно подтверждает изменения в клиенте для кнопки "Сохранить", а не на сервере.

В качестве обработчиков событий изменения ячейки можно указать саму таблицу или представление.
В этом случае, DBGate обновляет таблицу или представление сразу после изменения ячейки.
См. пример для s02.view_cashbook2.

Попробуйте эти примеры:

Взгляните на SQL код процедуры usp_cashbook_change.

Она имеет параметры: @column_name, @cell_value, @cell_number_value, @cell_datetime_value и @id.
Их достаточно для обновления целевой таблицы. И код процедуры достаточно простой.

Обработчики событий можно генерировать с помощью SaveToDB Developer Framework for SQL Server.

Использование SQL кода

DBGate поддерживает использование SQL аналогично хранимым процедурам.

Объекты в виде SQL кода можно определять в таблицах xls.objects и xls.handlers. Ниже приведены примеры:

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

Перевод интерфейса и данных

DBGate определяет язык пользователя по URL или из настроек браузера.

Перевод элементов интерфейса клиента DBGate находится в файле odatadb-languages.js.
В него можно легко добавить или изменить требуемый язык.

Также, DBGate передает язык хранимым процедурам, в параметрах @DataLanguage или @data_language.

Соответственно, приложения могут вернуть данные на требуемом языке. См. пример таблицы xls.translations.

Например, выберите язык и откройте пример ниже.

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

Использование формул

DBGate поддерживает подмножество формул Excel для расчета значений в браузере.

Формулы можно определять в представлениях, хранимых процедурах и объектах в виде SQL кода.

Ниже приведен пример расчета колонки остатка нарастающим итогом.

Условное форматирование

Для условного форматирования можно использовать два подхода:

Первый подход используется в примере s02_usp_cash_by_months. Он содержит правила в файле page.css.

Также, HTML страница содержит список колонок, которые используются в условном форматировании:

<script type="application/odatadb+json">
    {"data_row_fields":["row_format","section","level","row_bold"]}
</script>

Соответственно, DBGate устанавливает значения ячеек в атрибуты строк как data-row_format, data-section и т.д.

Можно использовать стили для чисел: gt0, eq0 и lt0.

Второй подход используется в примере budget reports приложения Gartle Budgeting.

Он загружает правила форматирования из таблицы xls.handlers.

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

Метаданные и сервисный документ

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

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

Т.к. DBGate анализирует SQL код представлений и хранимых процедур, и настраивает возможности автоматически,
модель сервиса зависит от наличия разрешения VIEW DEFINITION у пользователя.

Разработчики могут настраивать возможности приложений с помощью SaveToDB Framework,
добавляя пользователей в роль xls_users. В этом случае, модель будет включать и все настроенные возможности.

Попробуйте эти примеры с разными разрешениями и ролями пользователей.

DBGate отображает сервисные документы как таблицы содержания. Например, попробуйте следующую ссылку.

Заключение

Продукт ориентирован на разработчиков баз данных.

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

DBGate поддерживает SQL Server, Oracle, DB2, MySQL, PostgreSQL и NuoDB.

Продукт можно установить в Windows и Linux.

Браузер кода



DBGate генерирует веб-формы автоматически на основе объектов базы данных.
Например, для формы s02_cashbook используется только определение таблицы s02.cashbook.

Вы можете загрузить примеры для SQL Server, Oracle, MySQL и других платформ на странице SaveToDB SDK.