Esempio n. 1
0
        private void SetTableInfo(DataTable table)
        {
            if (table.ExtendedProperties.ContainsKey(TableProperty.UsingApproveRow))
            {
                UsingApproveRow = (bool)table.ExtendedProperties[TableProperty.UsingApproveRow];
            }
            if (table.ExtendedProperties.ContainsKey(TableProperty.UsingAttachment))
            {
                UsingAttachment = (bool)table.ExtendedProperties[TableProperty.UsingAttachment];
            }
            if (table.ParentRelations != null && table.ParentRelations.Count > 0)
            {
                string parentName = table.ParentRelations[0].ParentTable.TableName;
                for (int i = 0; i < table.DataSet.Tables.Count; i++)
                {
                    if (string.Compare(table.DataSet.Tables[i].TableName, parentName, true) == 0)
                    {
                        this.ParentIndex = i;
                        break;
                    }
                }
            }
            this.Pk = this.GetPk(table);
            StringBuilder builder     = new StringBuilder();
            StringBuilder newRowObj   = new StringBuilder();
            StringBuilder tempBuilder = new StringBuilder();
            int           r           = 0;

            foreach (DataColumn item in table.Columns)
            {
                if (!_UsingRowNo && item.ColumnName == "ROWNO")
                {
                    _UsingRowNo = true;
                }
                if (!_UsingRowId && item.ColumnName == "ROW_ID")
                {
                    _UsingRowId = true;
                }
                if (!this.IsDynamic)
                {
                    if (item.ExtendedProperties.ContainsKey(FieldProperty.IsDynamic))
                    {
                        this.IsDynamic = (bool)item.ExtendedProperties[FieldProperty.IsDynamic];
                    }
                }
                if (item.ExtendedProperties.ContainsKey(FieldProperty.SubTableIndex))
                {
                    SubTableMap.Add(item.ColumnName, (int)item.ExtendedProperties[FieldProperty.SubTableIndex]);
                }
                tempBuilder.AppendFormat("name:'{0}'", item.ColumnName);
                LibDataType dateType = (LibDataType)item.ExtendedProperties[FieldProperty.DataType];
                switch (dateType)
                {
                case LibDataType.Text:
                case LibDataType.NText:
                    newRowObj.AppendFormat("{0}:'{1}',", item.ColumnName, LibSysUtils.ToString(item.DefaultValue));
                    break;

                case LibDataType.Int32:
                    tempBuilder.Append(",type:'number'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToInt32(item.DefaultValue));
                    break;

                case LibDataType.Int64:
                    tempBuilder.Append(",type:'number'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToInt64(item.DefaultValue));
                    break;

                case LibDataType.Numeric:
                    tempBuilder.Append(",type:'number'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToDecimal(item.DefaultValue));
                    break;

                case LibDataType.Float:
                    tempBuilder.Append(",type:'number'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToSingle(item.DefaultValue));
                    break;

                case LibDataType.Double:
                    tempBuilder.Append(",type:'number'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToDouble(item.DefaultValue));
                    break;

                case LibDataType.Byte:
                    tempBuilder.Append(",type:'number'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToByte(item.DefaultValue));
                    break;

                case LibDataType.Boolean:
                    tempBuilder.Append(",type:'boolean'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToBoolean(item.DefaultValue) ? "true" : "false");
                    break;

                case LibDataType.Binary:
                    newRowObj.AppendFormat("{0}:'{1}',", item.ColumnName, LibSysUtils.ToString(item.DefaultValue));
                    break;
                }
                if (r == 0)
                {
                    builder.Append("{" + tempBuilder.ToString() + "}");
                }
                else
                {
                    builder.Append(",{" + tempBuilder.ToString() + "}");
                }
                r++;
                tempBuilder.Length = 0;
            }
            newRowObj.Remove(newRowObj.Length - 1, 1);
            this.Fields    = string.Format("[{0}]", builder.ToString());
            this.NewRowObj = "{" + newRowObj.ToString() + "}";
        }
Esempio n. 2
0
            public ColumnSchema(DataColumn field, string tableName)
            {
                this.Name = field.ColumnName;
                this.Size = field.MaxLength;
                LibDataType libDataType        = (LibDataType)field.ExtendedProperties[FieldProperty.DataType];
                string      defaultValueForamt = "CONSTRAINT [DF_{0}_{1}]  DEFAULT {2} ";

                switch (libDataType)
                {
                case LibDataType.Text:
                    this.ColumnType   = LibDbSchema.VARCHAR;
                    this.DefaultValue = string.Format("('{0}')", LibSysUtils.ToString(field.DefaultValue));

                    if (this.Size == -1)
                    {
                        this._ColumnTypeStr = string.Format("[{0}] [{1}](MAX) NOT NULL ", this.Name, LibDbSchema.VARCHAR);
                    }
                    else
                    {
                        this._ColumnTypeStr = string.Format("[{0}] [{1}]({2}) NOT NULL ", this.Name, LibDbSchema.VARCHAR, this.Size);
                    }

                    this._DefaultValueStr = string.Format(defaultValueForamt, tableName, this.Name, this.DefaultValue);
                    break;

                case LibDataType.NText:
                    this.ColumnType   = LibDbSchema.NVARCHAR;
                    this.DefaultValue = string.Format("('{0}')", LibSysUtils.ToString(field.DefaultValue));
                    if (this.Size == -1)
                    {
                        this._ColumnTypeStr = string.Format("[{0}] [{1}](MAX) NOT NULL", this.Name, LibDbSchema.NVARCHAR);
                    }
                    else
                    {
                        this._ColumnTypeStr = string.Format("[{0}] [{1}]({2}) NOT NULL", this.Name, LibDbSchema.NVARCHAR, this.Size);
                    }
                    this._DefaultValueStr = string.Format(defaultValueForamt, tableName, this.Name, this.DefaultValue);
                    break;

                case LibDataType.Int32:
                    this.ColumnType       = LibDbSchema.INT;
                    this.DefaultValue     = string.Format("(({0}))", LibSysUtils.ToInt32(field.DefaultValue));
                    this._ColumnTypeStr   = string.Format("[{0}] [{1}] NOT NULL", this.Name, LibDbSchema.INT);
                    this._DefaultValueStr = string.Format(defaultValueForamt, tableName, this.Name, this.DefaultValue);
                    break;

                case LibDataType.Int64:
                    this.ColumnType       = LibDbSchema.BIGINT;
                    this.DefaultValue     = string.Format("(({0}))", LibSysUtils.ToInt64(field.DefaultValue));
                    this._ColumnTypeStr   = string.Format("[{0}] [{1}] NOT NULL", this.Name, LibDbSchema.BIGINT);
                    this._DefaultValueStr = string.Format(defaultValueForamt, tableName, this.Name, this.DefaultValue);
                    break;

                case LibDataType.Numeric:
                    this.ColumnType       = LibDbSchema.DECIMAL;
                    this.DefaultValue     = string.Format("(({0}))", LibSysUtils.ToDecimal(field.DefaultValue));
                    this._ColumnTypeStr   = string.Format("[{0}] [{1}](18,9) NOT NULL", this.Name, LibDbSchema.DECIMAL);
                    this._DefaultValueStr = string.Format(defaultValueForamt, tableName, this.Name, this.DefaultValue);
                    break;

                case LibDataType.Float:
                case LibDataType.Double:
                    this.ColumnType       = LibDbSchema.FLOAT;
                    this.DefaultValue     = string.Format("(({0}))", LibSysUtils.ToSingle(field.DefaultValue));
                    this._ColumnTypeStr   = string.Format("[{0}] [{1}] NOT NULL", this.Name, LibDbSchema.FLOAT);
                    this._DefaultValueStr = string.Format(defaultValueForamt, tableName, this.Name, this.DefaultValue);
                    break;

                case LibDataType.Byte:
                    this.ColumnType       = LibDbSchema.TINYINT;
                    this.DefaultValue     = string.Format("(({0}))", LibSysUtils.ToByte(field.DefaultValue));
                    this._ColumnTypeStr   = string.Format("[{0}] [{1}] NOT NULL", this.Name, LibDbSchema.TINYINT);
                    this._DefaultValueStr = string.Format(defaultValueForamt, tableName, this.Name, this.DefaultValue);
                    break;

                case LibDataType.Boolean:
                    this.ColumnType       = LibDbSchema.BIT;
                    this.DefaultValue     = string.Format("(({0}))", LibSysUtils.ToInt32(field.DefaultValue));
                    this._ColumnTypeStr   = string.Format("[{0}] [{1}] NOT NULL", this.Name, LibDbSchema.BIT);
                    this._DefaultValueStr = string.Format(defaultValueForamt, tableName, this.Name, this.DefaultValue);
                    break;

                case LibDataType.Binary:
                    this.ColumnType       = LibDbSchema.BINARY;
                    this.DefaultValue     = string.Format("('{0}')", LibSysUtils.ToString(field.DefaultValue));
                    this._ColumnTypeStr   = string.Format("[{0}] {1} NULL", this.Name, LibDbSchema.BINARY);
                    this._DefaultValueStr = string.Format(defaultValueForamt, tableName, this.Name, this.DefaultValue);
                    break;

                case LibDataType.DateTime:
                    this.ColumnType       = LibDbSchema.DateTime;
                    this.DefaultValue     = string.Format("('{0}')", LibSysUtils.ToString(field.DefaultValue));
                    this._ColumnTypeStr   = string.Format("[{0}] {1} NULL", this.Name, LibDbSchema.DateTime);
                    this._DefaultValueStr = string.Format(defaultValueForamt, tableName, this.Name, this.DefaultValue);
                    break;

                case LibDataType.Date:
                    this.ColumnType       = LibDbSchema.DateTime;
                    this.DefaultValue     = string.Format("('{0}')", LibSysUtils.ToString(field.DefaultValue));
                    this._ColumnTypeStr   = string.Format("[{0}] {1} NULL", this.Name, LibDbSchema.Date);
                    this._DefaultValueStr = string.Format(defaultValueForamt, tableName, this.Name, this.DefaultValue);
                    break;

                case LibDataType.Time:
                    this.ColumnType       = LibDbSchema.Date;
                    this.DefaultValue     = string.Format("('{0}')", LibSysUtils.ToString(field.DefaultValue));
                    this._ColumnTypeStr   = string.Format("[{0}] {1} NULL", this.Name, LibDbSchema.Time);
                    this._DefaultValueStr = string.Format(defaultValueForamt, tableName, this.Name, this.DefaultValue);
                    break;

                default:
                    break;
                }
            }
Esempio n. 3
0
        public static LibQueryCondition MergeQueryCondition(DataTable table, LibQueryCondition condition, Dictionary <string, List <LibQueryField> > powerQueryFieldDic)
        {
            if (powerQueryFieldDic == null || powerQueryFieldDic.Count == 0)
            {
                return(condition);
            }
            if (condition == null || condition.QueryFields.Count == 0)
            {
                condition = new LibQueryCondition();
                foreach (var item in powerQueryFieldDic)
                {
                    foreach (var subItem in item.Value)
                    {
                        condition.QueryFields.Add(subItem);
                    }
                }
                return(condition);
            }
            List <LibQueryField> addList    = new List <LibQueryField>();
            List <string>        removeList = new List <string>();

            //将权限(仅存在一个权限设定,即非or的情况)合并到当前用户的选择条件中
            foreach (var powerQuery in powerQueryFieldDic)
            {
                if (powerQuery.Value.Count == 1)
                {
                    bool          exist = false;
                    LibQueryField other = powerQuery.Value[0];
                    foreach (var item in condition.QueryFields)
                    {
                        if (item.Name == powerQuery.Key)
                        {
                            exist = true;
                            DataColumn  col      = table.Columns[item.Name];
                            LibDataType dataType = (LibDataType)col.ExtendedProperties[FieldProperty.DataType];
                            switch (dataType)
                            {
                            case LibDataType.Text:
                            case LibDataType.NText:
                            case LibDataType.Binary:
                                string curStr1   = item.Value[0].ToString();
                                string otherStr1 = other.Value[0].ToString();
                                string curStr2   = string.Empty;
                                string otherStr2 = string.Empty;
                                if (item.Value.Count == 2)
                                {
                                    curStr2 = item.Value[1].ToString();
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherStr2 = other.Value[1].ToString();
                                }
                                MergeFieldQuery(addList, item, other, curStr1, otherStr1, curStr2, otherStr2);
                                break;

                            case LibDataType.Int32:
                                int curInt1   = LibSysUtils.ToInt32(item.Value[0]);
                                int otherInt1 = LibSysUtils.ToInt32(other.Value[0]);
                                int curInt2   = 0;
                                int otherInt2 = 0;
                                if (item.Value.Count == 2)
                                {
                                    curInt2 = LibSysUtils.ToInt32(item.Value[1]);
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherInt2 = LibSysUtils.ToInt32(other.Value[1]);
                                }
                                MergeFieldQuery(addList, item, other, curInt1, otherInt1, curInt2, otherInt2);
                                break;

                            case LibDataType.Int64:
                                long curLong1   = LibSysUtils.ToInt64(item.Value[0]);
                                long otherLong1 = LibSysUtils.ToInt64(other.Value[0]);
                                long curLong2   = 0;
                                long otherLong2 = 0;
                                if (item.Value.Count == 2)
                                {
                                    curLong2 = LibSysUtils.ToInt64(item.Value[1]);
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherLong2 = LibSysUtils.ToInt64(other.Value[1]);
                                }
                                MergeFieldQuery(addList, item, other, curLong1, otherLong1, curLong2, otherLong2);
                                break;

                            case LibDataType.Numeric:
                                decimal curDecimal1   = LibSysUtils.ToDecimal(item.Value[0]);
                                decimal otherDecimal1 = LibSysUtils.ToDecimal(other.Value[0]);
                                decimal curDecimal2   = 0;
                                decimal otherDecimal2 = 0;
                                if (item.Value.Count == 2)
                                {
                                    curDecimal2 = LibSysUtils.ToDecimal(item.Value[1]);
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherDecimal2 = LibSysUtils.ToDecimal(other.Value[1]);
                                }
                                MergeFieldQuery(addList, item, other, curDecimal1, otherDecimal1, curDecimal2, otherDecimal2);
                                break;

                            case LibDataType.Float:
                                float curFloat1   = LibSysUtils.ToSingle(item.Value[0]);
                                float otherFloat1 = LibSysUtils.ToSingle(other.Value[0]);
                                float curFloat2   = 0;
                                float otherFloat2 = 0;
                                if (item.Value.Count == 2)
                                {
                                    curFloat2 = LibSysUtils.ToSingle(item.Value[1]);
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherFloat2 = LibSysUtils.ToSingle(other.Value[1]);
                                }
                                MergeFieldQuery(addList, item, other, curFloat1, otherFloat1, curFloat2, otherFloat2);
                                break;

                            case LibDataType.Double:
                                double curDouble1   = LibSysUtils.ToDouble(item.Value[0]);
                                double otherDouble1 = LibSysUtils.ToDouble(other.Value[0]);
                                double curDouble2   = 0;
                                double otherDouble2 = 0;
                                if (item.Value.Count == 2)
                                {
                                    curDouble2 = LibSysUtils.ToDouble(item.Value[1]);
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherDouble2 = LibSysUtils.ToDouble(other.Value[1]);
                                }
                                MergeFieldQuery(addList, item, other, curDouble1, otherDouble1, curDouble2, otherDouble2);
                                break;

                            case LibDataType.Byte:
                                byte curByte1   = LibSysUtils.ToByte(item.Value[0]);
                                byte otherByte1 = LibSysUtils.ToByte(other.Value[0]);
                                byte curByte2   = 0;
                                byte otherByte2 = 0;
                                if (item.Value.Count == 2)
                                {
                                    curByte2 = LibSysUtils.ToByte(item.Value[1]);
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherByte2 = LibSysUtils.ToByte(other.Value[1]);
                                }
                                MergeFieldQuery(addList, item, other, curByte1, otherByte1, curByte2, otherByte2);
                                break;

                            case LibDataType.Boolean:
                                item.QueryChar = other.QueryChar;
                                item.Value     = other.Value;
                                break;
                            }
                            break;
                        }
                    }
                    if (!exist)
                    {
                        condition.QueryFields.Add(other);
                        removeList.Add(powerQuery.Key);
                    }
                }
            }
            foreach (var item in addList)
            {
                condition.QueryFields.Add(item);
            }

            //仅添加合并后剩余的权限条件(仅剩下or条件的权限)
            foreach (var item in powerQueryFieldDic)
            {
                if (!removeList.Contains(item.Key))
                {
                    condition.PowerQueryFieldDic.Add(item.Key, item.Value);
                }
            }
            return(condition);
        }