Цитата:
Сообщение от
Swetik
Gustav, подскажите, как можно довавить формулу(вычисляемый столбец) при выводе данных с помощью ADO?
Вариантов с вычисляемым столбцом может быть два:
1. Или Вы всё вычисляете в Аксапте и в Excel подаете уже вычисленное значение (это вариант, видимо, Вас не интересует в силу своей и так понятности)
2. Или Вы выводите все данные в Excel и у же в нём потом начинаете наводить финальный порядок: форматируете, добавляете формулы и т.п. ("форматируете, добавляете" конечно же кодом X++ из Аксапты) - думаю, что Вам интересен именно этот вариант.
Для добавления формулы в Excel используйте свойство FormulaR1C1 объекта Range. И нотацию формул в стиле R1C1, а не традиционную A1. Это позволит Вам написать одну единственную формулу для всего столбца.
Запишите в Excel процесс создания формулы макрорекордером и проанализируйте код VBA - уверен, всё станет понятно. Если что, обращайтесь - разберемся дальше.
Полезно сделать еще вот что. Допустим есть такая табличка Excel:
Код:
A B C
----------------------
1 2 =A1+B1
2 4 =A2+B2
3 6 =A3+B3
4 8 =A4+B4
5 10 =A5+B5
Формулы в столбец С были введены традиционно, т.е. сначала в ячейку С1 была введена формула =A1+B1, а потом скопирована в остальные ячейки столбца C.
Теперь выполним команду меню Excel: Сервис/Параметры/Общие/галка "Стиль ссылок R1C1" - установить. Таблица несколько преобразится:
Код:
1 2 3
-----------------------
1 2 =RC[-2]+RC[-1]
2 4 =RC[-2]+RC[-1]
3 6 =RC[-2]+RC[-1]
4 8 =RC[-2]+RC[-1]
5 10 =RC[-2]+RC[-1]
Обратите внимание, что в столбце C теперь присутствует идеальная с нашей точки зрения формула, общая для всех ячеек.
Из кода VBA ее можно ввести, например, с помощью такого оператора (разом в весь диапазон!):
Код:
Range("C1:C5").FormulaR1C1 = "=RC[-2]+RC[-1]"
Перевести ее на X++, думаю, не составит большого труда