Показать сообщение отдельно
Старый 26.07.2006, 09:27   #16  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от 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++, думаю, не составит большого труда

Последний раз редактировалось Gustav; 26.07.2006 в 09:51.