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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.05.2010, 10:00   #1  
Roman N. Krivov is offline
Roman N. Krivov
Участник
 
25 / 11 (1) +
Регистрация: 04.05.2010
Адрес: Мир, Россия, Московская область
Как передать в Excel (через ADO) число типа real так, чтобы оно не преобразовывалось в дату? Я указывают тип поля adDouble, а Excel всё равно преобразует в дату.
Старый 06.05.2010, 10:29   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,430 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Roman N. Krivov Посмотреть сообщение
Я указывают тип поля adDouble, а Excel всё равно преобразует в дату.
Не воспроизвелось
X++:
static void Job20100506(Args _args)
{
    #define.adDouble(5)
    COM Recordset;
    COM Fields;
    COM Field;
    COM Application;
    COM Workbooks;
    COM Workbook;
    COM Worksheets;
    COM Worksheet;
    COM Range;
    ;
    
    Recordset = new COM('ADODB.Recordset');
    Fields = Recordset.Fields();
    Fields.Append('Field1', #adDouble);
    
    Recordset.Open();
    Recordset.AddNew();
    Field = Fields.Item('Field1');
    Field.Value(123.45);
    Recordset.Update();
 
    Application = new COM('Excel.Application');
    Workbooks = Application.Workbooks();
    Workbook = Workbooks.add();
    Worksheets = Workbook.Worksheets();
    Worksheet  = Worksheets.Item(1);
    Range  = Worksheet.Range('A1');
    
    Range.CopyFromRecordset(Recordset);

    Recordset.Close();
    Application.Visible(true);
}
Старый 06.05.2010, 10:35   #3  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Тоже не воспроизвелось
X++:
static void Job298(Args _args)
{
    #CCADO

    COM rng  = SysExcelApplication::construct().workbooks().add().worksheets().itemFromNum(1).range('A1').comObject();
    COM rst  = new COM('ADODB.Recordset');
    COM flds = rst.Fields();
    COM fld;
    int i;

    flds.Append('MyReal', #adDouble);
    rst.Open();

    fld = flds.Item('MyReal');

    for (i=1; i<=10; i++)
    {
        rst.AddNew();
            fld.Value(100 + i/10);
        rst.Update();
    }
    rng.CopyFromRecordset(rst);
    COM::createFromObject(rng.Application()).Visible(true); // отобразим Excel
}
На чистом листе Excel не воспроизводится. Где-то у вас форматирование всё же выполняется, наверное...
Старый 06.05.2010, 10:51   #4  
Roman N. Krivov is offline
Roman N. Krivov
Участник
 
25 / 11 (1) +
Регистрация: 04.05.2010
Адрес: Мир, Россия, Московская область
Цитата:
Сообщение от Gustav Посмотреть сообщение
На чистом листе Excel не воспроизводится. Где-то у вас форматирование всё же выполняется, наверное...
Точно не воспроизводится.
А меня в шаблоне в ячейке указан формат "Число". И если передавать как строку - всё работает. Но уже второй день бьюсь над этим. Пришлось передавать поля типа "Строка"
Старый 06.05.2010, 11:11   #5  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Я обычно adDouble не использую, а использую для adCurrency.
Конечно, на файл шаблона бы взглянуть... Хотя бы на тот его фрагмент, куда пишется adDouble.
Можно выложить?
Старый 06.05.2010, 13:01   #6  
Roman N. Krivov is offline
Roman N. Krivov
Участник
 
25 / 11 (1) +
Регистрация: 04.05.2010
Адрес: Мир, Россия, Московская область
Цитата:
Сообщение от Gustav Посмотреть сообщение
Я обычно adDouble не использую, а использую для adCurrency.
Конечно, на файл шаблона бы взглянуть... Хотя бы на тот его фрагмент, куда пишется adDouble.
Можно выложить?
Выложил результат работы и шаблон
Изображения
 
Вложения
Тип файла: zip Act.zip (5.2 Кб, 141 просмотров)

Последний раз редактировалось Roman N. Krivov; 06.05.2010 в 13:05.
Старый 06.05.2010, 14:07   #7  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Роман, у меня два вопроса:
  1. Рекордсет создаете с учетом всех колонок, попадающих в область бланка? Т.е. у вас должно быть много фиктивных и немного содержательных - т.е. получается 16 содержательных где-то из 85 всего.
  2. Как вставляете новые строки? Сразу всё необходимое кол-во перед исходной 19-й строкой? Потом дополнительно еще формат этой исходной распространяете на добавленные?
Теги
ado, comvariant, excel, faq, odbc, sql, интеграция, прямой доступ, формат дат, экспорт, экспорт в excel

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вспомогательный класс для импорта из Excel через ADO gl00mie DAX: База знаний и проекты 80 10.04.2017 10:55
gl00mie: Read Excel table via ADO Blog bot DAX Blogs 2 09.04.2010 08:32
C# and AX Development: Using ADO for interfacing AX with an external database Blog bot DAX Blogs 0 05.08.2008 05:18
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, время: 22:58.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.