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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.12.2009, 15:31   #1  
polygris is offline
polygris
Участник
AxAssist
MCBMSS
 
272 / 67 (3) ++++
Регистрация: 14.06.2005
Адрес: Киев
при компиляции класса в 2009 появляется такое сообщение Best Practise: TwC: объявление об использовании API COM.Fields, поскольку он защищен с применением разграничения доступа кода.
Старый 20.05.2010, 11:19   #2  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
Количество строк?
X++:
int getRecordCount()
{
    if(rstExcel && rstExcel.State() != #adStateClosed)
        return rstExcel.RecordCount();
    return -1;
}
Использую метод excel.getRecordCount() для получения количества строк. Проверил дебагером, условие проходит попадает в stExcel.RecordCount(). но все равно возращает "-1". Хотя строки в файлике есть, и они грузятся.
Непонятно почему метод их не считает...?
Старый 20.05.2010, 13:35   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,292 / 3514 (124) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от propeller Посмотреть сообщение
Проверил дебагером, условие проходит попадает в stExcel.RecordCount(). но все равно возращает "-1". Хотя строки в файлике есть, и они грузятся.
Непонятно почему метод их не считает...?
Давно-давно, на заре появления ADO я читал, что RecordCount() может не возвращать полное количество строк для повышения быстродействия. А чтобы заставить этот метод вернуть правильное количество записей предлагалось сделать .MoveLast(), а затем .MoveFirst(), т.е. фактически пролистать до конца выборку (=утянуть ее всю на клиента) и вернуться в начало. Причем такой метод однозначно неприменим для forward-only курсоров (см пост от gl00mie).
__________________
Возможно сделать все. Вопрос времени
Старый 20.05.2010, 17:29   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
А что если радикально поменять метод на примерно такой:
X++:
public int getRecordCount()
{
    COM         rstCount;
    COM         fldCount;
    COMVariant  fldValue;
    ;
    rstCount = new COM(@"ADODB.Recordset");
    rstCount.Open(@"SELECT Count(*) FROM [" + strSheetName + @"$]", this.getConnection());

    fldCount = rstCount.Fields();
    fldCount = fldCount.Item(0);

    fldValue = fldCount.Value();
    return fldValue.int();
}
Старый 21.06.2010, 16:48   #5  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
Пользуюсь классом ExcelImportADO в 2009 AX. Создаю общие журналы (через axLedgerJournalTrans)
Очень удобно, все хорошо.
Только когда файл грузишь где строк тысяч 10, заметно что первые 1000 строк грузит гораздо быстрей чем следущие 1000 и так по нарастающей. Можно ли как то оптимизировать? может быть кэш очистить или еще что-то?
На классе который грузит RunOn - Called from.
Теги
ado, download, excel, импорт, полезное, axapta

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
gl00mie: Read Excel table via ADO Blog bot DAX Blogs 2 09.04.2010 08:32
dynamicsusers: DL Tips And Tricks: ADO Database Reader (Jet way) - Excel Example Blog bot DAX Blogs 0 02.08.2007 03:50
casperkamal: Using ADO to read from Excel in Microsoft Dynamics Ax Blog bot DAX Blogs 2 14.05.2007 11:59

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:32.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.