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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.08.2015, 10:33   #1  
Loengrinchik is offline
Loengrinchik
Участник
 
9 / 10 (1) +
Регистрация: 02.11.2014
Глюк(?) при импорте в Excel через .Net
AX 2009.Kernel Version 5.0.1600.2967; Application VErsion 5.0.1500.6491

Импортирую из Excel через .Net.
Сначала идет блок данных, в котором артикул состоит только из цифр. Затем артикул - буквенно-символьно-цифровой. Формат ячеек на всей колонке - Общий. Однако, выравнивание (автоматом Экселя)для числового - справа по ячейке. а выравнивание смешанного-строкового - слева.См картинку.

http://www.axforum.info/forums/attac...1&d=1439536033

Как ведет себя Axapta.
числовые артикулы считывает на ОК.
Строковые, если они идут так, как в скриншоте - не понимает. (пустая строка)

Что самое интересное, если загружать отдельно строковые(буквенно-символьно-цифровой) - все читает - все понимает.
Значит дело в коде. Привожу код.

X++:
container importNext()
{
    container       res;
    CLRObject    value;
    int                 row;
    int                 column;
    anytype         element;
    str                 string;
    ;

    dataRow = dataRowCollection.get_Item(nCountLines);

    array   = new System.Object[qtyColumn]();
    // Необходимо в каждой итерации заново инициализировать массив - Убрать ошибку с невозможностью считать данные другого типа (после числовых артикулов не понимает строковые) - Поэтому заново инициализировал массив. - не помогло
    array   = dataRow.get_ItemArray();
    for (counter = 0;  counter < qtyColumn; counter++)
    {   
        value   = dataRow.get_Item(counter);
        string  = value.ToString();
        if(string)
        {
            Element = valueNet2Anytype(value);
            if(Element)
            {
                res += Element;
            }
            else
            {
                res += string;
            }
        }
    }
    nCountLines++;
    return res;
}
Наc в общем интересует код до присвоения значения string. ( Когда на вход идет артикул типа: FBEB0010-100010 - string = пустая строка)

Если загружаем только артикулы буквенно-символьно-цифрового формата (типа FBEB0010-100010) - все разбирает.

Как вы наверно поняли, эта функция читает одну строку ячеек Excel. Вызывается в цикле извне. (Пробовал как через массив, так и через dataRow - не помогло).

У кого-нибудь есть идеи?
Изображения
 

Последний раз редактировалось Loengrinchik; 14.08.2015 в 10:36.
Старый 14.08.2015, 10:55   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Идеи есть:
  1. задайте явно для колонки с артикулом формат ячеек - текст, затем заново (!) вставьте данные, потому что уже имеющиеся из чисел в текст автоматом не преобразуются
  2. не используйте ADO для чтения данных См. также Проблемы с ADO про разный тип ячеек в одной колонке
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Загрузка Excel через OXML (конвертация типов данных) ackid DAX: Программирование 7 29.04.2015 15:09
Выбор столбцов при импорте\экспорте Excel add-in user_ax DAX: Программирование 19 12.11.2014 14:23
Обработка DBF через .net someOne DAX: База знаний и проекты 13 27.09.2012 15:30
Я стараюсь отчеты с расшифровкой делать... через группировку в Excel... OLAP... комбинацией OLAP + SSRS. mazzy DAX: Программирование 31 10.04.2010 12:20
Вложение файлов через метод .NET Business Connector (DocuRef, DocuValue) kornix DAX: Программирование 6 18.09.2009 10:36

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

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

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