Показать сообщение отдельно
Старый 06.05.2010, 11:09   #14  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,711 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Roman N. Krivov Посмотреть сообщение
Вот как раз с данной проблемой и столкнулся. У меня число преобразуется в дату. В качестве типа поля в ADORecordSet использую #adDouble
X++:
#define.adDouble            (  5)
Но при вставки в Excel в ячейке получается дата, хотя и в формате ячейки указано формат "Число"
Такой тестовый пример нормально отображает числа и даты?

X++:
static void ADORecordSet2Excel(Args _args)
{
    Com comRecordSet;
    Com comFields;
    Com comField;

    ComExcelDocument_RU excel;
    Com                 comRange;
    ;

    comRecordSet = new COM('ADODB.Recordset');
    // формируем структуру Recordset
    comFields = comRecordSet.Fields();
    comFields.Append("FieldStr",    COMVariantType::VT_BSTR);
    comFields.Append("FieldReal",   COMVariantType::VT_R8);
    comFields.Append("FieldDate" ,  COMVariantType::VT_DATE);

    // Открываем RecordSet для заполнения
    comRecordSet.open();

    // Формируем первую строку
    comRecordSet.AddNew();
    comField = comFields.Item("FieldStr");
    comField.value(comVariant::createFromStr("Первая строка"));

    comField = comFields.Item("FieldReal");
    comField.value(comVariant::createFromReal(123.456));

    comField = comFields.Item("FieldDate");
    comField.value(comVariant::createFromDate(systemDateGet()));

    // Формируем вторую строку
    comRecordSet.AddNew();
    comField = comFields.Item("FieldStr");
    comField.value(comVariant::createFromStr("Вторая строка"));

    comField = comFields.Item("FieldReal");
    comField.value(comVariant::createFromReal(789.01));

    comField = comFields.Item("FieldDate");
    comField.value(comVariant::createFromDate(systemDateGet()+10));

    // Открываем Excel с пустым листом и сразу делаем его видимым
    excel = new ComExcelDocument_RU();
    excel.newFile("",true);

    // Определяем ячейку, откуда будет осуществляться вывод
    comRange = excel.findRange("A1");

    // Выводим данные
    comRange.CopyFromRecordset(comRecordSet);
}