Цитата:
Сообщение от
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);
}