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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.02.2015, 14:25   #1  
АртемМелихов is offline
АртемМелихов
Участник
Аватар для АртемМелихов
 
120 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Загрузка данных из Excel COM
Добрый день, ситуация такая: есть файл Excel в котором есть ячейка с числом 1000. Данные загружаются в аксапту, и затем используются для создания журнала. И в при одном варианте загрузки мы получаем 1000,00, а при другом 1. Данные дергаем вот так :
X++:
 Fields.itemIdx(  ).Value()
Fields - это экземпляр класса CCADOField, соответственно метод value содержит :
X++:
anytype value()
{
    COMVariant  value;
    real        tmp;

    value = field.value();

    switch (value.variantType())
    {
        case COMVariantType::VT_I2:
            return value.byte();

        case COMVariantType::VT_I4:
            return value.int();

        case COMVariantType::VT_R4, COMVariantType::VT_R8:
            //VSN003_FD_022_boss_import_dPul -->
            tmp = value.double();
            if (tmp == 0)
                tmp = value.float();
            //VSN003_FD_022_boss_import_dPul <--
            return tmp;

        case COMVariantType::VT_CY:
            return value.currency();

        case COMVariantType::VT_DATE:
            return value.date();

        case COMVariantType::VT_BSTR:
            return value.bStr();

        case COMVariantType::VT_BOOL:
            return value.boolean();

        case COMVariantType::VT_DECIMAL:
            return value.decimal();

        case COMVariantType::VT_I1:
            return value.byte();

        case COMVariantType::VT_UI1:
            return value.uInt();

        case COMVariantType::VT_UI2:
            return value.uShort();

        case COMVariantType::VT_UI4:
            return value.uLong();
    }
    return '';
}
и при хорошем варианте мы получаем в switch - "1000"VT-R8, а в плохом - "1000"VT_BSTR. Год назад я решал похожую проблему, тем что удалял лишние пробелы в том что возвращал метод value(), но сейчас я натолкнулся на вариант который первоначально загружает в правильном формате, поэтому и пытаюсь разобраться в чем у них разница. Подскажите, куда копать!
P.S. Формат ячейки :

если поменять формат ячейки на числовой, то все работает правильно. Но это ведь не дает ответ, почему в одном варианте загрузки все работает и со старым форматом ячейки!

Последний раз редактировалось АртемМелихов; 05.02.2015 в 14:39. Причина: косяк
Теги
excel com формат

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
atinkerersnotebook: Using Vendor Requests to Manage On-boarding New Vendors Blog bot DAX Blogs 1 22.10.2013 02:24
atinkerersnotebook: Using Service Management to Track Service Orders Blog bot DAX Blogs 1 25.08.2013 19:16
emeadaxsupport: New Content for Microsoft Dynamics AX 2012 : October 2011 Blog bot DAX Blogs 0 27.10.2011 17:11
Sample Design Patterns: Microsoft Dynamics AX - Remedy for slow Microsoft Excel import Blog bot DAX Blogs 0 29.05.2011 17:13

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

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

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