Преобразование формул

Преобразование формул

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

Например:

SELECT
    id,
    name,
    qty,
    price,
    '=@qty*@price' AS amount
...

Продукты SaveToDB преобразуют такие формулы в расчетные формулы, специфичные для каждой платформы (Excel, DataTable или JavaScript).

Надстройка SaveToDB поддерживает практически все формулы Microsoft Excel, в то время как DBEdit, DBGate и ODataDB поддерживают лишь подмножество из них.

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

ConvertFormulas и DoNotConvertFormulas

Разработчики могут включать или отключать преобразование формул, используя типы ConvertFormulas и DoNotConvertFormulas в таблице xls.handlers.

Например:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODE
 s02usp_cashbook5balanceConvertFormulasATTRIBUTE
 xlshandlersHANDLER_CODEDoNotConvertFormulasATTRIBUTE

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

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

Formula и FormulaValue

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

Например:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODE
 s04usp_order_formamountFormulaATTRIBUTE=@qty*@price
 s22cashbookamountDoNotChangeATTRIBUTE

Этот случай аналогичен приведенному во введении.

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

Также сохраняются все строки, значения формул которых изменились.

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

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

Вторая возможность — это тип FormulaValue.

Например:

IDTABLE_SCHEMATABLE_NAMECOLUMN_NAMEEVENT_NAMEHANDLER_SCHEMAHANDLER_NAMEHANDLER_TYPEHANDLER_CODE
 s22cashbookmodified_byFormulaValueATTRIBUTE=DomainUserName()
 s22cashbookmodified_onFormulaValueATTRIBUTE=NOW()
 s22cashbookmodified_byDoNotChangeATTRIBUTE
 s22cashbookmodified_onDoNotChangeATTRIBUTE

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

Вы можете использовать встроенные формулы Excel и специальные встроенные формулы: =DomainUserName() и =UserName().

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

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

Например, ниже представлена конфигурация SQLite для получения данных акций из платформы Thinkorswim с использованием SQL-запроса и таблицы xls.objects:

IDTABLE_SCHEMATABLE_NAMETABLE_TYPETABLE_CODEINSERT_OBJECTUPDATE_OBJECTDELETE_OBJECT
 DDE WatchListCODE<SQL code>WatchListWatchListWatchList

Поле TABLE_CODE содержит следующий SQL-запрос:

SELECT
    Symbol,
    '=TOS|LAST!' + Symbol AS Last,
    '=TOS|NET_CHANGE!' + Symbol AS NetChange,
    '=TOS|PERCENT_CHANGE!' + Symbol AS Change,
    '=TOS|HIGH!' + Symbol AS High,
    '=TOS|LOW!' + Symbol AS Low,
    '=SUBSTITUTE(TOS|VOLUME!' + Symbol + '," ","")+0' AS Volume
FROM
    WatchList

Помните, что вы можете сохранять данные в SQLite даже в бесплатной версии SaveToDB.

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