|
![]() |
#1 |
Участник
|
Из того, что относится к собственно классу импорта, в голову приходит только тип курсора: у конструктора есть опциональный параметр int _cursorType = #adOpenForwardOnly, можно попробовать поставить #adOpenStatic (макрос из CCADO), тогда открываться файл будет чуть дольше, но скорость выборки строк должна стать одинаковой. Впрочем, я бы еще прошелся профилировщиком по коду импорта в целом - весьма вероятно, что замедление происходит где-то вне упомянутого класса. Причем оно может быть обусловлено совершенно безобидными на первый взгляд конструкциями, см., например, Channel9: Peter Villadsen and Gustavo Plancarte: X++ to MSIL:
Цитата:
Сообщение от belugin
![]() Было одно место при разноске больших журналов, где существенную долю составляло простое присваивание типа a = b, где b - ссылка на объект с кучей связанных объектов. Именно из-за детерминированного сборщика мусора, который обязан собрать весь мусор прямо в момент его появления (кто-то блогпост еще писал по этому поводу).
|
|
![]() |
#2 |
Участник
|
Проблема: класс ExcelImportADO при открытии файла Excel 2007 дает ошибку. Работаю в AX 4.0 SP2 под Windows 7. При открытии того же файла, сохраненного в формате Excel 1997-2003 ошибки нет, все прекрасно читается.
Цитата:
Метод "Open" в COM-объекте класса "ADODB.Connection" возвратил код ошибки 0x80004005 (E_FAIL), который означает: Внешняя таблица не имеет предполагаемый формат.
Набор таблиц недоступен. Приложение Excel инициализировано? Метод "Open" в COM-объекте класса "ADODB.Connection" возвратил код ошибки 0x80004005 (E_FAIL), который означает: Внешняя таблица не имеет предполагаемый формат. Невозможно открыть файл «c:\2007.xlsx» Цитата:
#localmacro.ADODBExcelConnString
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + %1 + ";Extended Properties='Excel 8.0;HDR=No;FirstRowHasNames=0;IMEX=1'" #endmacro |
|
![]() |
#3 |
Участник
|
Возникла такая проблема, при использовании данного класса:
X++: xlImport = new ExcelImportADO(filename); while(!xlImport.eof()) { strItemID = xlImport.getFieldValue(1); strItemAmount = xlImport.getFieldValue(3); ... Если кто-то сталкивался, подскажите как быть, плиз. |
|
![]() |
#4 |
Молодой, подающий надежды
|
Небольшой глюк
В методе getExcelSheetNames() помимо названий самих листов в контейнер попадают названия закладок (bookmark), что естественно приводит к ошибке, если закладка попадает в контейнер имен первой. Единственный способ отличить закладку от листа, который я пока нашел, это наличие символа '$' в названии листа. Вопрос: на сколько это корректно?
|
|
Теги |
ado, download, excel, импорт, полезное, axapta |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|