Показать сообщение отдельно
Старый 07.05.2010, 09:34   #48  
Roman N. Krivov is offline
Roman N. Krivov
Участник
 
25 / 11 (1) +
Регистрация: 04.05.2010
Адрес: Мир, Россия, Московская область
Цитата:
Сообщение от Gustav Посмотреть сообщение
Ох, ну, славно! Хотя по идее должно было работать и с полной строкой 19 (это я так... чисто эвристически делал предположение).
Я тоже думал что должно работать, однако ж не работает.

Цитата:
Сообщение от Gustav Посмотреть сообщение
Всё-таки не совсем понятно, почему даже на пустом Excel происходило... Как-то у вас дата, похоже, крепко хваталась со второй колонки и не "отпускалась" до конца строки. Напоминает поведение типа anytype, когда он принимает тип первого присваивания...

А покажите цикл заполнения рекордсета? (на радостях)
X++:
    . . .     
    rstAxa.AddNew();
    for(i=1; i<=arrFields.lastIndex(); i++)
    {
        cv  = this.getValueVariant(conpeek(con, i));
        fld = flds.Item(i-1);
        fld.Value(cv);
    }
    rstAxa.Update();
    . . .
X++:
protected COMVariant getValueVariant(anytype _value)
{
    COMVariant ret;
    ;
    switch(typeof(_value))
    {
        case Types::Date :
            ret = COMVariant::createFromDateAndTime(_value, 0);
            break;
        case Types::Real :
            ret = COMVariant::createFromReal(_value);
            break;
        case Types::Integer :
            ret = COMVariant::createFromInt( _value);
            break;
        case Types::String :
        case Types::RString :
        case Types::VarString :
            ret = COMVariant::createFromStr( _value);
            break;
        default :
            callStack2infolog();
            throw error(strfmt(@"%1(): Не знаю, как преобразовать значение из типа %2 в %3",
                                funcname(), typeof(_value), classstr(COMVariant)));
    }
    return ret;
}