How to fix utcDatetime data type in excel import or export interface

// Changed on 02 April 2012 at 11:32:59 by Jimmy Xie
/*

Creates a record containing the data from _data, and either for all field in _data or the fields
which are specified in SysExpImpField table.
AOT/class/SysDataIntegration/prepareFields*/
protected Common prepareFields(
    SysExpImpTable  _expImpTable,
    DictTable       _dictTable,
    container       _line,
    Common          _notUsed = null,
    ListIterator    _listIteratorSysExpImpField = null
    )
{
    SysExpImpField      expImpField;        // Table containing information about field setup
    Common              common;
    str                 s;
    SysDictField        sysDictField;
    fieldId             fieldIdBase;        // Base fieldid without array idx
    int                 enumInt;
    XppCompiler         compiler;
    ExecutePermission   executePermission = new ExecutePermission();
    ;
    common = _dictTable.makeRecord();
    executePermission.assert(); // ExpImpField has been protected by AOS Table security

    if (!_listIteratorSysExpImpField)
    {
        _listIteratorSysExpImpField = new ListIterator(this.witListSysExpImpFields(_expImpTable));
    }

    _listIteratorSysExpImpField.begin();

    while (_listIteratorSysExpImpField.more())
    {
        expImpField = _listIteratorSysExpImpField.value();
        s = this.getFieldStr(_expImpTable,expImpField);

        if (s)
        {
            if (expImpField.Expression)
            {
                // This should do it since the data is already converted.

                
//BP deviation documented
                compiler = new XppCompiler();

                if (!compiler.compile(expImpField.expressionAll()))
                {
                    throw error("@SYS96991");
                }
                else
                {
                    //BP deviation documented
                    s = runBuf(expImpField.expressionAll(), s);
                }
            }

            fieldIdBase = fieldExt2Id(expImpField.ConvFieldId);
            sysDictField = new SysDictField(
                expImpField.ConvTableId,
                fieldIdBase,
                fieldExt2Idx(expImpField.ConvFieldId));

            if (! sysDictField)
                continue;

            switch (sysDictField.baseType())
            {
                // Changed on 02 April 2012 at 11:32:59 by Jimmy Xie Begin
                case Types::UtcDateTime:
                    common.(expImpField.ConvFieldId) = str2datetime(s,-1);
                    break;
                // Changed on 02 April 2012 at 11:32:59 by Jimmy Xie End
                case Types::Date:
                    common.(expImpField.ConvFieldId) = str2date(s,-1);
                    break;
                case Types::Enum:
                    enumInt = str2enum(common.(sysDictField.id()), s);
                    if (enumInt==255// str not regonized
                    {
                        common.(sysDictField.id()) = str2int(s);
                    }
                    else
                    {
                        common.(sysDictField.id()) = enumInt;
                    }
                    break;
                case Types::String:
                case Types::RString:
                case Types::VarString:
                        common.(expImpField.ConvFieldId) += s;
                        break;
                case Types::UserType:
                    if (isTypeTime(sysDictField.extendedTypeId()))
                    {
                        common.(expImpField.ConvFieldId) = str2time(s);
                    }
                    else
                        common.(expImpField.ConvFieldId) = s;
                    break;

                case Types::Guid:
                        common.(expImpField.ConvFieldId) = str2guid(s);
                        break;

                default:
                    common.(expImpField.ConvFieldId) = s;
            }
        }

        _listIteratorSysExpImpField.next();
    }

    CodeAccessPermission::revertAssert();

    return common;
}
posted @ 2012-04-02 12:18  Fandy Xie  Views(811)  Comments(0Edit  收藏  举报