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() + "}"; }
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; } }
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); }