|
21.06.2010, 17:31 | #1 |
Участник
|
Из того, что относится к собственно классу импорта, в голову приходит только тип курсора: у конструктора есть опциональный параметр int _cursorType = #adOpenForwardOnly, можно попробовать поставить #adOpenStatic (макрос из CCADO), тогда открываться файл будет чуть дольше, но скорость выборки строк должна стать одинаковой. Впрочем, я бы еще прошелся профилировщиком по коду импорта в целом - весьма вероятно, что замедление происходит где-то вне упомянутого класса. Причем оно может быть обусловлено совершенно безобидными на первый взгляд конструкциями, см., например, Channel9: Peter Villadsen and Gustavo Plancarte: X++ to MSIL:
Цитата:
Сообщение от belugin
Было одно место при разноске больших журналов, где существенную долю составляло простое присваивание типа a = b, где b - ссылка на объект с кучей связанных объектов. Именно из-за детерминированного сборщика мусора, который обязан собрать весь мусор прямо в момент его появления (кто-то блогпост еще писал по этому поводу).
|
|
24.08.2010, 10:58 | #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 |
|
22.02.2011, 11:33 | #3 |
Участник
|
Возникла такая проблема, при использовании данного класса:
X++: xlImport = new ExcelImportADO(filename); while(!xlImport.eof()) { strItemID = xlImport.getFieldValue(1); strItemAmount = xlImport.getFieldValue(3); ... Если кто-то сталкивался, подскажите как быть, плиз. |
|
02.03.2011, 09:10 | #4 |
Молодой, подающий надежды
|
Небольшой глюк
В методе getExcelSheetNames() помимо названий самих листов в контейнер попадают названия закладок (bookmark), что естественно приводит к ошибке, если закладка попадает в контейнер имен первой. Единственный способ отличить закладку от листа, который я пока нашел, это наличие символа '$' в названии листа. Вопрос: на сколько это корректно?
|
|