protected override void ApplyTypeRestrictions(CdlValueHolder holder, DbTypeBase type)
        {
            base.ApplyTypeRestrictions(holder, type);

            var dtt = type as DbTypeDatetime;
            if (dtt != null)
            {
                if (!dtt.ExtendedPrecision)
                {
                    var htype = holder.GetFieldType();
                    if (htype.IsDateRelated())
                    {
                        var dt = holder.GetDateTimeValue();
                        dt.Nanosecond = dt.Nanosecond/1000000*1000000;
                        switch (htype)
                        {
                            case TypeStorage.DateEx:
                                holder.SetDateEx(dt.DatePart);
                                break;
                            case TypeStorage.TimeEx:
                                holder.SetTimeEx(dt.TimePart);
                                break;
                            case TypeStorage.DateTimeEx:
                                holder.SetDateTimeEx(dt);
                                break;
                            case TypeStorage.DateTime:
                                holder.SetDateTime(dt.AsDateTime);
                                break;
                        }
                    }
                }
            }
        }
示例#2
0
        protected virtual void ApplyTypeRestrictions(CdlValueHolder holder, DbTypeBase type)
        {
            var stype = type as DbTypeString;
            var htype = holder.GetFieldType();
            if (stype != null && htype == TypeStorage.String)
            {
                string sval = holder.GetString();
                if (stype.Length > 0 && sval.Length > stype.Length)
                {
                    sval = sval.Substring(0, stype.Length);
                    holder.SetString(sval);
                }
            }
            if (htype.IsDateRelated() && !m_allowZeroInDate)
            {
                var dt = holder.GetDateTimeValue();

                if (dt.MakeValidDate())
                {
                    m_holder.SetDateTimeEx(dt);
                }
            }
        }