AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.10.2007, 12:15   #1  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
RecordInsertList для Excel
Для добавления массы записей в таблицу существует RecordInsertList (ну и еще что-то), а никто не думал, как ускорить процесс таким же методом для Excel?
Старый 02.10.2007, 12:18   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Например добавлять записи в TextBuffer, а потом весь TextBuffer засунуть в Excel.
Старый 02.10.2007, 12:42   #3  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
что-то я не нашла примера такого применения, не очень поняла, как имея таблицу в аксапте с 50 записями можно сразу вставить в экселе,а не по одной штуке

И еще возник вопрос: а как можно средствами аксапты отключить и включить автовычисления на листе в экселе? Что-то тоже не нашла в методах COMDocEx
Старый 02.10.2007, 13:02   #4  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
1) Делаете цикл по строкам таблицы
2) Делаете цикл по столбцам таблицы
3) Заносите значение в TextBuffer (примерно так) - textBuffer.appendText(constructString(_value));
4) Когда все перебрали копируете TextBuffer в Excel. Примерно так:

X++:
textBuffer.toClipboard();
tmpRange = tmpWorkSheet.range(gm_reportExcelDocument::numToNameCell(col, row));
tmpRange.PasteSpecial(1);
Клипбоард можно предварительно сохранить, а потом вернуть обратно.
Старый 02.10.2007, 13:28   #5  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Проситите необразованность, PasteSpecial - а что это за метод и как очистить занимаемаю область (я так понимаю это и есть toClipboard()) ? Не понятно, а как он определяет какой текстбуфер вставить?

И что с Как можно средствами аксапты отключить и включить автовычисления на листе в экселе?

Последний раз редактировалось Arahnid; 02.10.2007 в 14:47.
Старый 02.10.2007, 13:49   #6  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
а еще что значат в textBuffer
(10) "Сало" ignorecase=TRUE regexp=TRUE
? Название номенклатуры ? ?
Старый 02.10.2007, 17:22   #7  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Arahnid Посмотреть сообщение
Для добавления массы записей в таблицу существует RecordInsertList (ну и еще что-то), а никто не думал, как ускорить процесс таким же методом для Excel?
Думали, ускорили
Поговорим об ADO
особенно место в коде, где CopyFromRecordset
Цитата:
Сообщение от Arahnid Посмотреть сообщение
И что с Как можно средствами аксапты отключить и включить автовычисления на листе в экселе?
В Excel у объекта Application есть свойство Calculation. Им и задается мануальный или автоматический пересчет. Подробнее см. в справке по Excel VBA на своем компутере.
Старый 02.10.2007, 19:51   #8  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Arahnid Посмотреть сообщение
а никто не думал, как ускорить процесс таким же методом для Excel?
Дык это.. вы ж путаете теплое с мягким. Ваш вопрос звучит примерно так:
От Москвы до Питера время в пути можно сократить с 8 до 5 часов - т.к. появился новый экспресс. Вопрос: Никто не думал, как можно быстрее добраться по Москве от Пражской до Алтуфьево?

Эти две вещи между собой никак не связаны. RecordInsertList дает ускорение перед обычной вставкой потому что он не генерит RecId сразу для каждой записи.
Если можно было бы вообще не генерить RecId, то вставка была бы практически моментальной.

Вставка в Excel никакого отношения к генерации RecId не имеет. Есть методы ускорения и глубокоуважаемый мною Gustav этим вопросом изрядно позанимался. Ссылку он привел. Поэтому тут по определению аналога класса RecordInsertList быть не может.
__________________
Возможно сделать все. Вопрос времени
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
gl00mie: Read Excel table via ADO Blog bot DAX Blogs 2 09.04.2010 08:32
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Вызов Item() для коллекций Excel Владимир Максимов DAX: Программирование 15 17.08.2006 19:47

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:56.