Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="dsid">数据源id或progid</param>
        public LibDSContext(string dsid)
        {
            this._dsid = dsid;
            CachHelp cach = new CachHelp();

            _ds = cach.GetCach(string.Format("{0}_{1}", dsid, SysConstManage.TBSchemasuffix)) as LibDataSource;
            if (_ds == null)
            {
                _ds = SDPCRL.COM.ModelManager.ModelManager.GetDataSource(dsid);
                if (_ds == null)
                {
                    LibFormPage form = SDPCRL.COM.ModelManager.ModelManager.GetFormSource(dsid);
                    _ds = SDPCRL.COM.ModelManager.ModelManager.GetDataSource(form.DSID);
                }
                //101:数据源:{0} 不存在
                if (_ds == null)
                {
                    throw new LibExceptionBase(101, dsid);
                }
                //100:没有表结构
                if (_ds.DefTables == null)
                {
                    throw new LibExceptionBase(100);
                }
                cach.AddCachItem(string.Format("{0}_{1}", dsid, SysConstManage.TBSchemasuffix), _ds, DateTimeOffset.Now.AddMinutes(30));
            }
            InitialContext();
        }
Пример #2
0
        public string GetSQL(string tableNm, string[] fields, WhereObject where, bool IsJoinRelateTable = true, bool IsJoinFromSourceField = true)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append(ResFactory.ResManager.SQLSelect);
            if (fields != null)
            {
                foreach (string field in fields)
                {
                    if (builder.Length != ResFactory.ResManager.SQLSelect.Length)
                    {
                        builder.Append(SysConstManage.Comma);
                    }
                    builder.AppendFormat(" {0}", field);
                }
            }
            if (string.IsNullOrEmpty(this._id))
            {
                if (builder.Length == ResFactory.ResManager.SQLSelect.Length)
                {
                    builder.AppendFormat(" {0}", SysConstManage.Asterisk);
                }
                builder.AppendFormat(" {0}", ResFactory.ResManager.SQLFrom);
                builder.AppendFormat(" {0}", tableNm);
            }
            else
            {
                LibDataSource ds = null;
                if (this._mark)
                {
                    ds = ModelManager.GetDataSource(this._id);
                }
                else
                {
                    LibFormPage form = ModelManager.GetFormSource(this._id);
                    ds = ModelManager.GetDataSource(form.DSID);
                }
                if (ds != null)
                {
                    DoGetSQL(builder, tableNm, ds, where, null, false, IsJoinRelateTable, IsJoinFromSourceField);
                }
            }
            if (where != null && !string.IsNullOrEmpty(where.WhereFormat))
            {
                return(string.Format("EXEC sp_executesql N'{0} where {1}',{2}", builder.ToString(), where.WhereFormat, where.ValueTostring));
            }
            return(string.Format("EXEC sp_executesql N'{0}'", builder.ToString()));
        }
Пример #3
0
        private void InternalGetSQL(StringBuilder builder, string tableNm, string[] fields, string[] sumaryfields, WhereObject where, bool ispage, bool IsJoinRelateTable, bool IsJoinFromSourceField, bool IsRpt)
        {
            builder.Append(ResFactory.ResManager.SQLSelect);
            if (fields != null)
            {
                foreach (string field in fields)
                {
                    if (builder.Length != ResFactory.ResManager.SQLSelect.Length)
                    {
                        builder.Append(SysConstManage.Comma);
                    }
                    builder.AppendFormat(" {0}", field);
                }
            }
            if (string.IsNullOrEmpty(this._id))
            {
                if (builder.Length == ResFactory.ResManager.SQLSelect.Length)
                {
                    builder.AppendFormat(" {0}", SysConstManage.Asterisk);
                }

                //builder.AppendFormat("{0}ROW_NUMBER()OVER(order by A.BillNo) as rownumber");
                builder.AppendFormat(" {0}", ResFactory.ResManager.SQLFrom);
                builder.AppendFormat(" {0}", tableNm);
            }
            else
            {
                LibDataSource ds = null;
                if (this._mark)
                {
                    ds = ModelManager.GetDataSource(this._id);
                }
                else
                {
                    LibFormPage form = ModelManager.GetFormSource(this._id);
                    ds = ModelManager.GetDataSource(form.DSID);
                }
                if (ds != null)
                {
                    DoGetSQL(builder, tableNm, ds, where, sumaryfields, ispage, IsJoinRelateTable, IsJoinFromSourceField, IsRpt);
                }
            }
        }
Пример #4
0
        public LibTableObj(string dsid, string tablenm)
        {
            LibDataSource _ds = SDPCRL.COM.ModelManager.ModelManager.GetDataSource(dsid);

            //101:数据原:{0} 不存在
            if (_ds == null)
            {
                throw new LibExceptionBase(101, dsid);
            }
            //100:没有表结构
            if (_ds.DefTables == null)
            {
                throw new LibExceptionBase(100);
            }
            this._dsid = dsid;
            foreach (LibDefineTable deftb in _ds.DefTables)
            {
                if (deftb.TableStruct == null)
                {
                    continue;
                }
                foreach (LibDataTableStruct tb in deftb.TableStruct)
                {
                    if (tb.Name.ToUpper() != tablenm.ToUpper())
                    {
                        continue;
                    }
                    DataTable = new CreateTableSchemaHelp().DoCreateTableShema(tb);
                    break;
                }
            }
            if (DataTable == null)
            {
                throw new LibExceptionBase(521);
            }
            GetColumns();
        }
Пример #5
0
        private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            LibTreeNode curentNode = (LibTreeNode)this.treeView1.SelectedNode;

            switch (e.ClickedItem.Name)
            {
            case "andTransField":     //添加转单字段
                if (this._Trans.TransFields == null)
                {
                    _Trans.TransFields = new LibCollection <LibTransFieldMap>();
                }
                var existfields = _Trans.TransFields.Tolist();
                if (string.IsNullOrEmpty(_Trans.SrcProgId))
                {
                    ExceptionManager.ThrowError("来源单progid 必填");
                    //MessageHandle.ShowMessage("来源单progid 必填",false);
                }
                var           formpage = ModelDesignProject.GetFormSourceByFormId(_Trans.SrcProgId);
                LibDataSource ds       = ModelDesignProject.GetDataSourceById(formpage.DSID);
                Panel         p        = new Panel();
                p.Dock       = DockStyle.Fill;
                p.Name       = "pfieldcollection";
                p.AutoScroll = true;
                TreeView tree = new TreeView();
                //tree.AfterCheck += new TreeViewEventHandler(Gridtree_AfterCheck);
                tree.CheckBoxes = true;
                tree.Dock       = DockStyle.Fill;
                p.Controls.Add(tree);
                LibTreeNode _node;
                if (ds.DefTables != null)
                {
                    List <ExistField> exists = new List <ExistField>();
                    foreach (var item in existfields)
                    {
                        exists.Add(new ExistField {
                            Name = item.SrcFieldNm, FromTableNm = item.SrcTableNm
                        });
                    }
                    DSUtiles.GetAllFieldsByDS(ds, tree, exists);
                }
                FieldCollectionForm fielsform = new FieldCollectionForm(p);
                DialogResult        dialog    = fielsform.ShowDialog(this);
                if (dialog == DialogResult.OK)
                {
                    curentNode.Nodes.Clear();
                    if (_Trans.TransFields != null && _Trans.TransFields.Count > 0)
                    {
                        _Trans.TransFields.RemoveAll();
                    }
                    foreach (LibTreeNode deftb in tree.Nodes)
                    {
                        foreach (LibTreeNode tbstruct in deftb.Nodes)
                        {
                            foreach (LibTreeNode f in tbstruct.Nodes)
                            {
                                if (!f.Checked)
                                {
                                    continue;
                                }
                                #region 添加节点
                                //树节点

                                LibTreeNode fieldNode = new LibTreeNode();
                                fieldNode.NodeId   = Guid.NewGuid().ToString();
                                fieldNode.NodeType = NodeType.TransField;
                                fieldNode.Name     = f.Name;
                                fieldNode.Text     = fieldNode.Name;
                                curentNode.Nodes.Add(fieldNode);

                                //控件属性
                                TransFieldProperty fieldProperty = new TransFieldProperty(fieldNode.NodeId);
                                _transFieldlst.Add(fieldProperty);
                                fieldProperty.Dock = DockStyle.Fill;
                                this.splitContainer1.Panel2.Controls.Add(fieldProperty);

                                //对应实体
                                LibTransFieldMap libtransfield = new LibTransFieldMap();
                                libtransfield.ID         = fieldNode.NodeId;
                                libtransfield.SrcFieldNm = f.Name;
                                libtransfield.SrcTableNm = (bool)f.Tag ? tbstruct.Name : string.Empty;
                                //libtransfield.FromDefTableNm = (bool)f.Tag ? deftb.Name : string.Empty;
                                libtransfield.SrcTableIndex   = Convert.ToInt32(tbstruct.NodeId);
                                libtransfield.SrcFieldDisplay = f.Text;
                                //libtransfield.Isdefine = !(bool)f.Tag;

                                _Trans.TransFields.Add(libtransfield);

                                fieldProperty.SetPropertyValue(libtransfield, fieldNode);

                                #endregion
                            }
                        }
                    }
                    UpdateTabPageText();
                }
                break;
            }
        }
Пример #6
0
        public LibTable[] CreateTableSchema(string dsid, string package)
        {
            //List<LibTable> dts = new List<LibTable>();
            //LibTable dftb = null;
            //DataTable dt = null;
            //DataColumn col = null;
            //List<DataColumn> primarykey= null;
            //int index = 0;
            FileOperation fileoperation = new FileOperation();
            LibDataSource data          = ModelManager.ModelManager.GetModelBypath <LibDataSource>(_root, dsid, package);

            return(CreateTableSchema(data));

            #region 旧代码
            //if (data != null)
            //{
            //    if (data.DefTables == null) return null;
            //    foreach (LibDefineTable deftb in data.DefTables)
            //    {
            //        if (deftb.TableStruct == null) continue;
            //        dftb = new LibTable(deftb.TableName);
            //        dftb.Tables = new DataTable[deftb.TableStruct.Count];
            //        index = 0;
            //        foreach (LibDataTableStruct tb in deftb.TableStruct)
            //        {
            //            if (tb.Fields == null) continue;
            //            dt = new DataTable(tb.Name);
            //            dftb.Tables[index] = dt;
            //            primarykey = new List<DataColumn>();
            //            foreach (LibField f in tb.Fields)
            //            {
            //                col = new DataColumn(f.Name);
            //                col.Caption = f.DisplayName;
            //                switch (f.FieldType)
            //                {
            //                    case LibFieldType.Byte:
            //                        col.DataType = typeof(byte);
            //                        if (!f.AutoIncrement)
            //                            col.DefaultValue = 0;
            //                        break;
            //                    case LibFieldType.Date:
            //                        col.DataType = typeof(Date);
            //                        //if (!f.AutoIncrement)
            //                        //    col.DefaultValue = new Date { value = DateTime.Now.ToString() };
            //                        break;
            //                    case LibFieldType.DateTime:
            //                        col.DataType = typeof(DateTime);
            //                        if (!f.AutoIncrement)
            //                            col.DefaultValue = DateTime.Now;
            //                        break;
            //                    case LibFieldType.Decimal:
            //                        col.DataType = typeof(decimal);
            //                        if (!f.AutoIncrement)
            //                            col.DefaultValue = 0;
            //                        break;
            //                    case LibFieldType.Interger:
            //                        col.DataType = typeof(Int32);
            //                        if (!f.AutoIncrement)
            //                            col.DefaultValue = 0;
            //                        break;
            //                    case LibFieldType.Long:
            //                        col.DataType = typeof(long);
            //                        if (!f.AutoIncrement)
            //                            col.DefaultValue = 0;
            //                        break;
            //                    case LibFieldType.String:
            //                    case LibFieldType.Text:
            //                        col.DataType = typeof(string);
            //                        if (!f.AutoIncrement)
            //                            col.DefaultValue = string.Empty;
            //                        break;
            //                }
            //                if (tb.PrimaryKey.Contains(f.Name))//属于主键
            //                {
            //                    primarykey.Add(col);
            //                }
            //                if (f.AutoIncrement)
            //                {
            //                    col.AutoIncrement = true;
            //                    col.AutoIncrementSeed = f.AutoIncrementSeed;
            //                    col.AutoIncrementStep = f.AutoIncrementStep;
            //                }
            //                col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties { IsActive=f.IsActive ,
            //                    IsRelate = true,
            //                    MapPrimarykey =f.RelatePrimarykey,
            //                    DataTypeLen =f.FieldLength,
            //                    Decimalpoint =f.Decimalpoint,
            //                    AliasName=f.AliasName
            //                    });
            //                dt.Columns.Add(col);
            //            }

            //            #region 系统默认新增的一列行号 用于系统对行项 唯一标识,自增长。
            //            col = new DataColumn(SysConstManage.sdp_rowid);
            //            col.DataType = typeof(int);
            //            col.AutoIncrement = true;
            //            col.AutoIncrementSeed = 1;
            //            col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties { IsActive =false, IsRelate = false});
            //            dt.Columns.Add(col);
            //            #endregion

            //            #region 系统默认新增的一列 是否选中。
            //            col = new DataColumn(SysConstManage.IsSelect);
            //            col.DataType = typeof(bool);
            //            col.DefaultValue = false;
            //            col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties { IsActive = false, IsRelate = false });
            //            dt.Columns.Add(col);
            //            #endregion

            //            dt.PrimaryKey = primarykey.ToArray();
            //            dt.ExtendedProperties.Add(SysConstManage.ExtProp, new TableExtendedProperties
            //            {
            //                TableIndex = tb.TableIndex,
            //                RelateTableIndex = tb.JoinTableIndex,
            //                Ignore = tb.Ignore
            //            }) ;
            //            index++;
            //        }
            //        dts.Add(dftb);
            //    }
            //}
            //return dts.ToArray();
            #endregion
        }
Пример #7
0
        public LibTable[] CreateTableSchema(LibDataSource data)
        {
            List <LibTable> dts = new List <LibTable>();

            LibTable[] _dts = null;
            LibTable   dftb = null;
            DataTable  dt   = null;
            //DataColumn col = null;
            //List<DataColumn> primarykey = null;
            int index = 0;

            if (data != null)
            {
                if (data.DefTables == null)
                {
                    return(null);
                }
                //CachHelp cach = new CachHelp();
                // _dts = cach.GetCach(string.Format("{0}_{1}", data.DSID, SysConstManage.TBSchemasuffix)) as LibTable[];
                //if (_dts != null)
                //{

                //    return _dts;
                //}
                foreach (LibDefineTable deftb in data.DefTables)
                {
                    if (deftb.TableStruct == null)
                    {
                        continue;
                    }
                    dftb        = new LibTable(deftb.TableName);
                    dftb.Tables = new LibTableObj[deftb.TableStruct.Count];
                    index       = 0;
                    foreach (LibDataTableStruct tb in deftb.TableStruct)
                    {
                        if (tb.Fields == null)
                        {
                            continue;
                        }
                        dt = DoCreateTableShema(tb);
                        dftb.Tables[index] = new LibTableObj(dt);
                        #region 旧代码
                        //dt = new DataTable(tb.Name);
                        //dftb.Tables[index] = dt;
                        //primarykey = new List<DataColumn>();
                        //foreach (LibField f in tb.Fields)
                        //{
                        //    col = new DataColumn(f.Name);
                        //    col.Caption = f.DisplayName;
                        //    switch (f.FieldType)
                        //    {
                        //        case LibFieldType.Byte:
                        //            col.DataType = typeof(bool);
                        //            if (!f.AutoIncrement)
                        //                col.DefaultValue = 0;
                        //            break;
                        //        case LibFieldType.Date:
                        //            col.DataType = typeof(Date);
                        //            //if (!f.AutoIncrement)
                        //            //    col.DefaultValue = new Date { value = DateTime.Now.ToString() };
                        //            break;
                        //        case LibFieldType.DateTime:
                        //            col.DataType = typeof(DateTime);
                        //            if (!f.AutoIncrement)
                        //                col.DefaultValue = DateTime.Now;
                        //            break;
                        //        case LibFieldType.Decimal:
                        //            col.DataType = typeof(decimal);
                        //            if (!f.AutoIncrement)
                        //                col.DefaultValue = 0;
                        //            break;
                        //        case LibFieldType.Interger:
                        //            col.DataType = typeof(Int32);
                        //            if (!f.AutoIncrement)
                        //                col.DefaultValue = 0;
                        //            break;
                        //        case LibFieldType.Long:
                        //            col.DataType = typeof(long);
                        //            if (!f.AutoIncrement)
                        //                col.DefaultValue = 0;
                        //            break;
                        //        case LibFieldType.String:
                        //        case LibFieldType.Text:
                        //            col.DataType = typeof(string);
                        //            if (!f.AutoIncrement)
                        //                col.DefaultValue = string.Empty;
                        //            break;
                        //        case LibFieldType.Img:
                        //            col.DataType = typeof(byte[]);
                        //            break;
                        //    }
                        //    if (tb.PrimaryKey.Contains(f.Name))//属于主键
                        //    {
                        //        primarykey.Add(col);
                        //    }
                        //    if (f.AutoIncrement)
                        //    {
                        //        col.AutoIncrement = true;
                        //        col.AutoIncrementSeed = f.AutoIncrementSeed;
                        //        col.AutoIncrementStep = f.AutoIncrementStep;
                        //    }
                        //    col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties
                        //    {
                        //        IsActive = f.IsActive,
                        //        IsRelate = false,
                        //        MapPrimarykey = f.RelatePrimarykey,
                        //        DataTypeLen = f.FieldLength,
                        //        Decimalpoint = f.Decimalpoint,
                        //        AliasName = f.AliasName
                        //    });
                        //    dt.Columns.Add(col);
                        //    if (f.SourceField != null && f.SourceField.Count > 0)
                        //    {
                        //        foreach (LibFromSourceField item in f.SourceField)
                        //        {
                        //            foreach (var relatef in item.RelateFieldNm)
                        //            {
                        //                if (relatef.FromTableIndex != item.FromTableIndex) continue;
                        //                col = new DataColumn(string.IsNullOrEmpty(relatef.AliasName) ? relatef.FieldNm : relatef.AliasName);
                        //                col.Caption = relatef.DisplayNm;
                        //                switch (relatef.FieldType)
                        //                {
                        //                    case LibFieldType.Byte:
                        //                        col.DataType = typeof(byte);
                        //                        col.DefaultValue = 0;
                        //                        break;
                        //                    case LibFieldType.Date:
                        //                        col.DataType = typeof(Date);
                        //                        break;
                        //                    case LibFieldType.DateTime:
                        //                        col.DataType = typeof(DateTime);
                        //                        col.DefaultValue = DateTime.Now;
                        //                        break;
                        //                    case LibFieldType.Decimal:
                        //                        col.DataType = typeof(decimal);
                        //                        col.DefaultValue = 0;
                        //                        break;
                        //                    case LibFieldType.Interger:
                        //                        col.DataType = typeof(Int32);
                        //                        col.DefaultValue = 0;
                        //                        break;
                        //                    case LibFieldType.Long:
                        //                        col.DataType = typeof(long);
                        //                        col.DefaultValue = 0;
                        //                        break;
                        //                    case LibFieldType.String:
                        //                    case LibFieldType.Text:
                        //                        col.DataType = typeof(string);
                        //                        col.DefaultValue = string.Empty;
                        //                        break;
                        //                }
                        //                col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties
                        //                {
                        //                    IsActive = false,
                        //                    IsRelate = true,
                        //                    MapPrimarykey = string.Empty,
                        //                    DataTypeLen = 0,
                        //                    Decimalpoint = 0,
                        //                    AliasName = relatef.AliasName
                        //                });
                        //                dt.Columns.Add(col);
                        //            }
                        //        }
                        //    }
                        //}

                        //#region 系统默认新增的一列行号 用于系统对行项 唯一标识,自增长。
                        //col = new DataColumn(SysConstManage.sdp_rowid);
                        //col.DataType = typeof(int);
                        //col.AutoIncrement = true;
                        //col.AutoIncrementSeed = 1;
                        //col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties { IsActive = false, IsRelate = false });
                        //dt.Columns.Add(col);
                        //#endregion

                        //#region 系统默认新增的一列 是否选中。
                        //col = new DataColumn(SysConstManage.IsSelect);
                        //col.DataType = typeof(bool);
                        //col.DefaultValue = false;
                        //col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties { IsActive = false, IsRelate = false });
                        //dt.Columns.Add(col);
                        //#endregion

                        //dt.PrimaryKey = primarykey.ToArray();
                        //dt.ExtendedProperties.Add(SysConstManage.ExtProp, new TableExtendedProperties
                        //{
                        //    TableIndex = tb.TableIndex,
                        //    RelateTableIndex = tb.JoinTableIndex,
                        //    Ignore = tb.Ignore
                        //});
                        #endregion
                        index++;
                    }
                    dts.Add(dftb);
                }
                _dts = dts.ToArray();
                //cach.AddCachItem(string.Format("{0}_{1}", data.DSID, SysConstManage.TBSchemasuffix), _dts, DateTimeOffset.Now.AddMinutes(30));
            }
            return(_dts);
        }
Пример #8
0
        private void DoGetSQL(StringBuilder builder, string tableNm, LibDataSource ds, WhereObject where, string[] sumaryfields, bool page = false, bool IsJoinRelateTable = true, bool IsJoinFromSourceField = true, bool IsRpt = false)
        {
            List <LibDataTableStruct>   list           = new List <LibDataTableStruct>();
            StringBuilder               joinstr        = new StringBuilder();
            StringBuilder               joinfield      = null;
            StringBuilder               allfields      = new StringBuilder();
            Dictionary <string, string> tablealiasmdic = new Dictionary <string, string>();

            foreach (LibDefineTable item in ds.DefTables)
            {
                if (item.TableStruct == null)
                {
                    continue;
                }
                list.AddRange(item.TableStruct.ToArray());
            }
            var  tb        = list.FirstOrDefault(i => i.Name == tableNm && i.Ignore);
            char tbaliasnm = LibSysUtils.ToCharByTableIndex(tb.TableIndex);

            #region 组织要查询表的字段
            if (builder.Length == ResFactory.ResManager.SQLSelect.Length)
            {
                foreach (LibField f in tb.Fields)
                {
                    if (!f.IsActive)
                    {
                        continue;
                    }
                    if (allfields.Length > 0)
                    {
                        allfields.Append(SysConstManage.Comma);
                    }
                    allfields.AppendFormat(" {0}.{1}", tbaliasnm, f.Name);
                }
                #region 日志列
                if (allfields.Length > 0)
                {
                    allfields.Append(SysConstManage.Comma);
                }
                allfields.AppendFormat(" {0}.{1}", tbaliasnm, SysConstManage.Sdp_LogId);
                #endregion
            }
            #endregion
            if (tb != null)
            {
                if (IsJoinRelateTable)
                {
                    var        relatetbs = list.Where(i => i.JoinTableIndex == tb.TableIndex && i.TableIndex != tb.TableIndex && i.Ignore).ToList();
                    List <int> tbindexs  = null;
                    //char tbaliasnm2 = tbaliasnm;
                    while (relatetbs != null && relatetbs.Count > 0)
                    {
                        tbindexs = new List <int>();
                        foreach (var jointb in relatetbs)
                        {
                            tbindexs.Add(jointb.TableIndex);
                            #region 组织joinstr语句
                            joinstr.AppendFormat(" {0} {1} {2} {3} ",
                                                 ResFactory.ResManager.SQLLeftJoin,
                                                 jointb.Name,
                                                 LibSysUtils.ToCharByTableIndex(jointb.TableIndex),
                                                 //(char)(jointb.TableIndex+65),
                                                 ResFactory.ResManager.SQLOn);
                            joinfield = new StringBuilder();
                            foreach (var relatfield in jointb.JoinFields)
                            {
                                if (joinfield.Length > 0)
                                {
                                    joinfield.Append(ResFactory.ResManager.SQLAnd);;
                                }
                                LibField libfd = jointb.Fields.FindFirst("Name", relatfield);
                                //if (string.IsNullOrEmpty(libfd.RelatePrimarykey))
                                joinfield.AppendFormat(" {0}.{1}={2}.{3} ",
                                                       LibSysUtils.ToCharByTableIndex(jointb.JoinTableIndex),
                                                       string.IsNullOrEmpty(libfd.RelatePrimarykey) ? relatfield : libfd.RelatePrimarykey,
                                                       LibSysUtils.ToCharByTableIndex(jointb.TableIndex),
                                                       relatfield);
                                //else
                            }
                            joinstr.Append(joinfield.ToString());
                            joinstr.AppendLine();
                            #endregion

                            #region 取关联表的字段
                            if (builder.Length == ResFactory.ResManager.SQLSelect.Length)
                            {
                                foreach (LibField f2 in jointb.Fields)
                                {
                                    if (!f2.IsActive || jointb.JoinFields.Contains(f2.Name))
                                    {
                                        continue;
                                    }
                                    if (allfields.ToString().ToUpper().Contains(string.Format(".{0}", f2.Name.ToUpper())) && string.IsNullOrEmpty(f2.AliasName))
                                    {
                                        allfields.AppendFormat("{0}{1}.{2} as {3}", SysConstManage.Comma, LibSysUtils.ToCharByTableIndex(jointb.TableIndex), f2.Name, string.Format("{0}{2}{1}", LibSysUtils.ToCharByTableIndex(jointb.TableIndex), f2.Name, SysConstManage.Underline));
                                    }
                                    else
                                    {
                                        if (!string.IsNullOrEmpty(f2.AliasName))
                                        {
                                            allfields.AppendFormat("{0}{1}.{2} as {3}", SysConstManage.Comma, LibSysUtils.ToCharByTableIndex(jointb.TableIndex), f2.Name, f2.AliasName);
                                        }
                                        else
                                        {
                                            allfields.AppendFormat("{0}{1}.{2}", SysConstManage.Comma, LibSysUtils.ToCharByTableIndex(jointb.TableIndex), f2.Name);
                                        }
                                    }
                                }
                            }
                            #endregion
                        }
                        relatetbs = list.Where(i => tbindexs.Contains(i.JoinTableIndex) && i.TableIndex != i.JoinTableIndex && i.Ignore).ToList();
                        //tbaliasnm2=
                    }
                }
                #region 字段上的来源表。
                var           relatefields = tb.Fields.ToArray().Where(i => i.SourceField != null);
                List <string> vals         = new List <string>();
                foreach (LibField f in relatefields)
                {
                    foreach (LibFromSourceField fromfield in f.SourceField)
                    {
                        string key  = string.Format("{0}{1}{2}", f.Name, fromfield.FromDataSource, fromfield.FromTableIndex);
                        string tbnm = string.Format("{0}{1}", tbaliasnm, LibSysUtils.ToCharByTableIndex(fromfield.FromTableIndex));
                        if (!tablealiasmdic.ContainsKey(key))
                        {
                            //vals.Add(tbnm);
                            int cout = vals.Where(i => i == tbnm).Count();
                            if (cout > 0)
                            {
                                tbnm = string.Format("{0}{1}", tbnm, cout);
                                //tablealiasmdic.Add(key, string.Format("{0}", tbnm));
                            }
                            vals.Add(tbnm);
                            tablealiasmdic.Add(key, tbnm);
                            //tablealiasmdic.Add(key,string.Format( tbnm);
                            //tablealiasmdic[tbnm]++;
                            //tbnm = string.Format("{0}{1}", tbnm, tablealiasmdic[tbnm]+1);
                        }
                        else
                        {
                            ////int cout = vals.Where(i => i == tbnm).Count();
                            tbnm = tablealiasmdic[key];
                            //tablealiasmdic.Add(tbnm, 0);
                        }

                        #region 组织joinstr语句
                        joinstr.AppendFormat(" {0} {1} {2} {3} ",
                                             ResFactory.ResManager.SQLLeftJoin,
                                             fromfield.FromStructTableNm,
                                             tbnm,
                                             //(char)(jointb.TableIndex+65),
                                             ResFactory.ResManager.SQLOn);
                        joinfield = new StringBuilder();
                        if (joinfield.Length > 0)
                        {
                            joinfield.Append(ResFactory.ResManager.SQLAnd);
                        }
                        joinfield.AppendFormat(" {0}.{1}={2}.{3} ",
                                               tbaliasnm,
                                               f.Name,
                                               tbnm,
                                               fromfield.FromFieldNm);
                        #region 处理JoinOnCondition
                        if (!string.IsNullOrEmpty(fromfield.JoinOnCondition))
                        {
                            if (where == null)
                            {
                                where = new WhereObject();
                            }
                            DoJoinOnCondition(fromfield.JoinOnCondition, where);
                        }
                        #endregion
                        joinstr.Append(joinfield.ToString());
                        joinstr.AppendLine();
                        if (IsJoinFromSourceField)
                        {
                            #region 取来源表所在数据源的 与来源表关联的表。
                            LibDataSource fromSouceDS = ModelManager.GetDataSource(fromfield.FromDataSource);
                            if (fromSouceDS != null)
                            {
                                List <LibDataTableStruct> list2 = new List <LibDataTableStruct>();
                                foreach (LibDefineTable def in fromSouceDS.DefTables)
                                {
                                    if (def.TableStruct == null)
                                    {
                                        continue;
                                    }
                                    list2.AddRange(def.TableStruct.ToArray());
                                }
                                var        relatetbs = list2.Where(i => i.JoinTableIndex == fromfield.FromTableIndex && i.TableIndex != fromfield.FromTableIndex && i.Ignore).ToList();
                                List <int> tbindexs2 = null;
                                while (relatetbs != null && relatetbs.Count > 0)
                                {
                                    tbindexs2 = new List <int>();
                                    foreach (var jointb in relatetbs)
                                    {
                                        string key2 = string.Format("{0}{1}{2}", f.Name, fromfield.FromDataSource, jointb.TableIndex);
                                        tbindexs2.Add(jointb.TableIndex);
                                        string tbnm2 = string.Format("{0}{1}", tbaliasnm, LibSysUtils.ToCharByTableIndex(jointb.TableIndex));
                                        if (!tablealiasmdic.ContainsKey(key2))
                                        {
                                            //vals.Add(tbnm2);
                                            int cout = vals.Where(i => i == tbnm2).Count();
                                            if (cout > 0)
                                            {
                                                tbnm2 = string.Format("{0}{1}", tbnm2, cout);
                                                //tablealiasmdic.Add(key, string.Format("{0}", tbnm));
                                            }
                                            tablealiasmdic.Add(key, tbnm2);
                                            //tablealiasmdic.Add(key2, tbnm2);
                                            //tablealiasmdic[tbnm2]++;
                                            //tbnm2 = string.Format("{0}{1}", tbnm2, tablealiasmdic[tbnm2]+1);
                                        }
                                        else
                                        {
                                            tbnm2 = tablealiasmdic[key2];
                                            //tablealiasmdic.Add(tbnm2, 0);
                                        }
                                        joinstr.AppendFormat(" {0} {1} {2} {3} ",
                                                             ResFactory.ResManager.SQLLeftJoin,
                                                             jointb.Name,
                                                             tbnm2,
                                                             //(char)(jointb.TableIndex+65),
                                                             ResFactory.ResManager.SQLOn);
                                        joinfield = new StringBuilder();
                                        foreach (var relatfield in jointb.JoinFields)
                                        {
                                            if (joinfield.Length > 0)
                                            {
                                                joinfield.Append(ResFactory.ResManager.SQLAnd);;
                                            }
                                            LibField libfd = jointb.Fields.FindFirst("Name", relatfield);
                                            joinfield.AppendFormat(" {0}.{1}={2}.{3} ",
                                                                   string.Format("{0}{1}", tbaliasnm, LibSysUtils.ToCharByTableIndex(jointb.JoinTableIndex)),
                                                                   string.IsNullOrEmpty(libfd.RelatePrimarykey) ? relatfield : libfd.RelatePrimarykey,
                                                                   string.Format("{0}{1}", tbaliasnm, LibSysUtils.ToCharByTableIndex(jointb.TableIndex)),
                                                                   relatfield);
                                        }
                                        joinstr.Append(joinfield.ToString());
                                        joinstr.AppendLine();
                                    }
                                    relatetbs = list2.Where(i => tbindexs2.Contains(i.JoinTableIndex) && i.TableIndex != i.JoinTableIndex && i.Ignore).ToList();
                                    //tbaliasnm2=
                                }
                            }
                            #endregion
                        }
                        if (builder.Length == ResFactory.ResManager.SQLSelect.Length || IsRpt)
                        {
                            if (fromfield.RelateFieldNm != null)
                            {
                                foreach (LibRelateField relatef in fromfield.RelateFieldNm)
                                {
                                    if (!IsJoinFromSourceField && relatef.FromTableIndex != fromfield.FromTableIndex)
                                    {
                                        continue;
                                    }
                                    key = string.Format("{0}{1}{2}", f.Name, fromfield.FromDataSource, relatef.FromTableIndex);
                                    //tbnm = string.Format("{0}{1}", tbaliasnm, LibSysUtils.ToCharByTableIndex(relatef.FromTableIndex));
                                    //if (IsJoinFromSourceField && relatef.FromTableIndex != fromfield.FromTableIndex)
                                    //{
                                    tbnm = tablealiasmdic[key];
                                    //}
                                    if (allfields.Length > 0)
                                    {
                                        allfields.Append(SysConstManage.Comma);
                                    }
                                    if (!string.IsNullOrEmpty(relatef.AliasName))
                                    {
                                        allfields.AppendFormat("{0}.{1} as {2}",
                                                               //SysConstManage.Comma,
                                                               tbnm,
                                                               relatef.FieldNm,
                                                               relatef.AliasName);
                                    }
                                    else
                                    {
                                        allfields.AppendFormat("{0}.{1}",
                                                               //SysConstManage.Comma,
                                                               tbnm,
                                                               relatef.FieldNm);
                                    }
                                }
                            }
                        }
                        #endregion
                    }
                }
                #endregion
                if (builder.Length == ResFactory.ResManager.SQLSelect.Length || IsRpt)
                {
                    if (builder.Length != ResFactory.ResManager.SQLSelect.Length)
                    {
                        builder.Append(SysConstManage.Comma);
                    }
                    builder.Append(allfields.ToString());
                }
                if (page) //分页
                {
                    StringBuilder orderstr = new StringBuilder();
                    foreach (string key in tb.PrimaryKey)
                    {
                        if (orderstr.Length > 0)
                        {
                            orderstr.Append(SysConstManage.Comma);
                        }
                        orderstr.AppendFormat("{0}.{1}", LibSysUtils.ToCharByTableIndex(tb.TableIndex), key);
                    }
                    builder.AppendFormat(",ROW_NUMBER()OVER(order by {0}) as rownumber ", orderstr.ToString());
                }
                //if (sumaryfields != null) //汇总字段
                //{
                //    foreach (string field in sumaryfields)
                //    {
                //        builder.AppendFormat(",SUM({0})OVER() as {1}{2}", field,SysConstManage.sdp_summaryprefix,field .Substring(field.IndexOf(".")+1));
                //    }
                //}
                builder.AppendFormat(" {0}", ResFactory.ResManager.SQLFrom);
                builder.AppendFormat(" {0} {1}", tableNm, tbaliasnm);
                builder.Append(joinstr.ToString());
            }
        }
Пример #9
0
 public static void GetAllFieldsByDS(LibDataSource ds, TreeView tree, List <ExistField> existfields)
 {
     #region 收集数据源字段
     foreach (LibDefineTable deftb in ds.DefTables)
     {
         LibTreeNode deftbnode = new LibTreeNode();
         deftbnode.Name = deftb.TableName;
         deftbnode.Text = string.Format("{0}({1})", deftb.DisplayName, deftb.TableName);
         tree.Nodes.Add(deftbnode);
         LibTreeNode _node;
         if (deftb.TableStruct != null)
         {
             foreach (LibDataTableStruct dtstruct in deftb.TableStruct)
             {
                 LibTreeNode dtstructnode = new LibTreeNode();
                 dtstructnode.Name   = dtstruct.Name;
                 dtstructnode.Text   = string.Format("{0}({1})", dtstruct.DisplayName, dtstruct.Name);
                 dtstructnode.NodeId = dtstruct.TableIndex.ToString();
                 deftbnode.Nodes.Add(dtstructnode);
                 if (dtstruct.Fields != null)
                 {
                     foreach (LibField fld in dtstruct.Fields)
                     {
                         if (!fld.IsActive)
                         {
                             continue;
                         }
                         _node         = new LibTreeNode();
                         _node.Name    = fld.Name;
                         _node.Text    = fld.DisplayName;
                         _node.Tag     = true;
                         _node.Checked = existfields.FirstOrDefault(i => i.Name == fld.Name && i.FromTableNm == dtstruct.Name) != null;
                         dtstructnode.Nodes.Add(_node);
                         if (fld.SourceField != null && fld.SourceField.Count > 0)
                         {
                             foreach (LibFromSourceField fromfld in fld.SourceField)
                             {
                                 if (fromfld.RelateFieldNm != null && fromfld.RelateFieldNm.Count > 0)
                                 {
                                     foreach (LibRelateField relateField in fromfld.RelateFieldNm)
                                     {
                                         if (relateField != null)
                                         {
                                             _node         = new LibTreeNode();
                                             _node.Name    = string.IsNullOrEmpty(relateField.AliasName) ? relateField.FieldNm : relateField.AliasName;
                                             _node.Text    = relateField.DisplayNm;
                                             _node.Tag     = false;
                                             _node.Checked = existfields.FirstOrDefault(i => i.Name == _node.Name && i.FromTableNm == dtstruct.Name) != null;
                                             dtstructnode.Nodes.Add(_node);
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     #endregion
 }
Пример #10
0
        public override void TextAndBotton_Click(object sender, EventArgs e)
        {
            base.TextAndBotton_Click(sender, e);
            Control ctl   = sender as Control;
            string  ctrNm = ctl.Name.Replace(SysConstManage.BtnCtrlNmPrefix, "");

            if (_Node != null)
            {
                var            pnode       = _Node.Parent as TreeNode;
                LibTransSource transSource = pnode.Tag as LibTransSource;
                if (string.Compare(ctrNm, "tranfld_TargetFieldNm") == 0)
                {
                    if (string.IsNullOrEmpty(transSource.TargetProgId))
                    {
                        ExceptionManager.ThrowError("目标单progid 必填");
                        //MessageHandle.ShowMessage("来源单progid 必填",false);
                    }
                    var           formpage = ModelDesignProject.GetFormSourceByFormId(transSource.TargetProgId);
                    LibDataSource ds       = ModelDesignProject.GetDataSourceById(formpage.DSID);
                    Panel         p        = new Panel();
                    p.Dock       = DockStyle.Fill;
                    p.Name       = "pfieldcollection";
                    p.AutoScroll = true;
                    TreeView tree = new TreeView();
                    tree.AfterCheck += new TreeViewEventHandler(tree_AfterCheck);
                    tree.CheckBoxes  = true;
                    tree.Dock        = DockStyle.Fill;
                    p.Controls.Add(tree);
                    //LibTreeNode _node;
                    if (ds.DefTables != null)
                    {
                        List <ExistField> exists = new List <ExistField>();
                        exists.Add(new ExistField {
                            Name = this.entity.TargetFieldNm, FromTableNm = this.entity.TargetTableNm
                        });
                        DSUtiles.GetAllFieldsByDS(ds, tree, exists);
                    }

                    FieldCollectionForm fielsform = new FieldCollectionForm(p);
                    DialogResult        dialog    = fielsform.ShowDialog(this);
                    if (dialog == DialogResult.OK)
                    {
                        foreach (LibTreeNode deftb in tree.Nodes)
                        {
                            foreach (LibTreeNode tbstruct in deftb.Nodes)
                            {
                                foreach (LibTreeNode f in tbstruct.Nodes)
                                {
                                    if (!f.Checked)
                                    {
                                        continue;
                                    }
                                    this.entity.TargetFieldNm      = f.Name;
                                    this.entity.TargetFieldDisplay = f.Text;
                                    this.entity.TargetTableNm      = (bool)f.Tag ? tbstruct.Name : string.Empty;
                                    this.entity.TargetTableIndex   = Convert.ToInt32(tbstruct.NodeId);
                                    break;
                                }
                            }
                        }
                        this.SetPropertyValue(this.entity, _Node);
                        UpdateTabPageText();
                    }
                }
            }
        }
Пример #11
0
        private void contextMenuStrip2_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            LibTreeNode   curentNode        = (LibTreeNode)this.treeView1.SelectedNode;
            LibReportGrid currentlibrptgrid = _rpt.GridGroups.FindFirst("GridGroupID", curentNode.NodeId);

            switch (e.ClickedItem.Name)
            {
            case "AddFromDSField":     //添加数据源字段
                if (currentlibrptgrid.ReportFields == null)
                {
                    currentlibrptgrid.ReportFields = new LibCollection <LibReportField>();
                }
                var           existfields = currentlibrptgrid.ReportFields.Tolist();
                LibDataSource ds          = ModelDesignProject.GetDataSourceById(currentlibrptgrid.DSID);
                Panel         p           = new Panel();
                p.Dock       = DockStyle.Fill;
                p.Name       = "pfieldcollection";
                p.AutoScroll = true;
                TreeView tree = new TreeView();
                tree.AfterCheck += new TreeViewEventHandler(Gridtree_AfterCheck);
                tree.CheckBoxes  = true;
                tree.Dock        = DockStyle.Fill;
                p.Controls.Add(tree);
                LibTreeNode _node;
                if (ds.DefTables != null)
                {
                    List <ExistField> exists = new List <ExistField>();
                    foreach (var item in existfields)
                    {
                        exists.Add(new ExistField {
                            Name = item.Name, FromTableNm = item.FromTableNm
                        });
                    }
                    DSUtiles.GetAllFieldsByDS(ds, tree, exists);
                    #region 收集数据源字段
                    //foreach (LibDefineTable deftb in ds.DefTables)
                    //{
                    //    LibTreeNode deftbnode = new LibTreeNode();
                    //    deftbnode.Name = deftb.TableName;
                    //    deftbnode.Text = string.Format("{0}({1})", deftb.DisplayName, deftb.TableName);
                    //    tree.Nodes.Add(deftbnode);
                    //    if (deftb.TableStruct != null)
                    //    {
                    //        foreach (LibDataTableStruct dtstruct in deftb.TableStruct)
                    //        {
                    //            LibTreeNode dtstructnode = new LibTreeNode();
                    //            dtstructnode.Name = dtstruct.Name;
                    //            dtstructnode.Text = string.Format("{0}({1})", dtstruct.DisplayName, dtstruct.Name);
                    //            dtstructnode.NodeId = dtstruct.TableIndex.ToString();
                    //            deftbnode.Nodes.Add(dtstructnode);
                    //            if (dtstruct.Fields != null)
                    //            {
                    //                foreach (LibField fld in dtstruct.Fields)
                    //                {
                    //                    if (!fld.IsActive) continue;
                    //                    _node = new LibTreeNode();
                    //                    _node.Name = fld.Name;
                    //                    _node.Text = fld.DisplayName;
                    //                    _node.Tag = true;
                    //                    _node.Checked = existfields.FirstOrDefault(i => i.Name == fld.Name && i.FromTableNm == dtstruct.Name) != null;
                    //                    dtstructnode.Nodes.Add(_node);
                    //                    if (fld.SourceField != null && fld.SourceField.Count > 0)
                    //                    {
                    //                        foreach (LibFromSourceField fromfld in fld.SourceField)
                    //                        {
                    //                            if (fromfld.RelateFieldNm != null && fromfld.RelateFieldNm.Count > 0)
                    //                            {
                    //                                foreach (LibRelateField relateField in fromfld.RelateFieldNm)
                    //                                {
                    //                                    if (relateField != null)
                    //                                    {
                    //                                        _node = new LibTreeNode();
                    //                                        _node.Name = string.IsNullOrEmpty(relateField.AliasName) ? relateField.FieldNm : relateField.AliasName;
                    //                                        _node.Text = relateField.DisplayNm;
                    //                                        _node.Tag = false;
                    //                                        _node.Checked = existfields.FirstOrDefault(i => i.Name == _node.Name && i.FromTableNm == dtstruct.Name) != null;
                    //                                        dtstructnode.Nodes.Add(_node);
                    //                                    }
                    //                                }
                    //                            }
                    //                        }
                    //                    }
                    //                }
                    //            }
                    //        }
                    //    }
                    //}
                    #endregion
                }
                FieldCollectionForm fielsform = new FieldCollectionForm(p);
                DialogResult        dialog    = fielsform.ShowDialog(this);

                if (dialog == DialogResult.OK)
                {
                    curentNode.Nodes.Clear();
                    if (currentlibrptgrid.ReportFields != null && currentlibrptgrid.ReportFields.Count > 0)
                    {
                        currentlibrptgrid.ReportFields.RemoveAll();
                    }
                    foreach (LibTreeNode deftb in tree.Nodes)
                    {
                        foreach (LibTreeNode tbstruct in deftb.Nodes)
                        {
                            foreach (LibTreeNode f in tbstruct.Nodes)
                            {
                                if (!f.Checked)
                                {
                                    continue;
                                }
                                #region 添加节点
                                //树节点

                                LibTreeNode fieldNode = new LibTreeNode();
                                fieldNode.NodeId   = Guid.NewGuid().ToString();
                                fieldNode.NodeType = NodeType.GridGroup_Field;
                                fieldNode.Name     = f.Name;
                                fieldNode.Text     = fieldNode.Name;
                                curentNode.Nodes.Add(fieldNode);

                                //控件属性
                                ReportFieldProperty rptfieldProperty = new ReportFieldProperty(fieldNode.NodeId);
                                _reportFieldlst.Add(rptfieldProperty);
                                rptfieldProperty.Dock = DockStyle.Fill;
                                this.splitContainer1.Panel2.Controls.Add(rptfieldProperty);

                                //对应实体
                                LibReportField librptfield = new LibReportField();
                                librptfield.ID             = fieldNode.NodeId;
                                librptfield.Name           = f.Name;
                                librptfield.FromTableNm    = (bool)f.Tag? tbstruct.Name:string.Empty;
                                librptfield.FromDefTableNm = (bool)f.Tag ? deftb.Name:string.Empty;
                                librptfield.FromTableIndex = Convert.ToInt32(tbstruct.NodeId);
                                librptfield.DisplayName    = f.Text;
                                librptfield.Isdefine       = !(bool)f.Tag;

                                currentlibrptgrid.ReportFields.Add(librptfield);

                                rptfieldProperty.SetPropertyValue(librptfield, fieldNode);

                                #endregion
                            }
                        }
                    }
                    UpdateTabPageText();
                }
                break;

            case "AddDefineField":    //添加自定义字段
                break;
            }
        }
Пример #12
0
        public override void TextAndBotton_Click(object sender, EventArgs e)
        {
            base.TextAndBotton_Click(sender, e);
            Control ctl   = sender as Control;
            string  ctrNm = ctl.Name.Replace(SysConstManage.BtnCtrlNmPrefix, "");
            Panel   p     = new Panel();

            p.Dock       = DockStyle.Fill;
            p.Name       = "pfieldcollection";
            p.AutoScroll = true;
            ListBox listBox = new ListBox();

            listBox.Dock = DockStyle.Fill;
            p.Controls.Add(listBox);
            if (string.Compare(ctrNm, "rptGrid_DSID") == 0) //选择数据源ID
            {
                string[] dsarray = ModelManager.GetAllDataSourceNm(string.Empty);
                if (dsarray != null && dsarray.Length > 0)
                {
                    foreach (string item in dsarray)
                    {
                        listBox.Items.Add(item);
                    }
                }
                FieldCollectionForm fielsform = new FieldCollectionForm(p);
                DialogResult        dialog    = fielsform.ShowDialog(this);
                if (dialog == DialogResult.OK)
                {
                    if (listBox.SelectedItem == null)
                    {
                        return;
                    }
                    if (this.Controls[ctrNm].Text.Trim() != listBox.SelectedItem.ToString())
                    {
                        this.Controls[ctrNm].Text = listBox.SelectedItem.ToString();
                        this.entity.DSID          = listBox.SelectedItem.ToString();
                    }
                }
            }
            else if (string.Compare(ctrNm, "rptGrid_FromTable") == 0) //来源表
            {
                if (!string.IsNullOrEmpty(this.entity.DSID))
                {
                    LibDataSource ds = ModelDesignProject.GetDataSourceById(this.entity.DSID);
                    if (ds != null && ds.DefTables != null)
                    {
                        foreach (LibDefineTable deftb in ds.DefTables)
                        {
                            if (deftb.TableStruct != null)
                            {
                                foreach (LibDataTableStruct tb in deftb.TableStruct)
                                {
                                    listBox.Items.Add(tb.Name);
                                }
                            }
                        }
                    }
                }
                FieldCollectionForm fielsform = new FieldCollectionForm(p);
                DialogResult        dialog    = fielsform.ShowDialog(this);
                if (dialog == DialogResult.OK)
                {
                    if (listBox.SelectedItem == null)
                    {
                        return;
                    }
                    if (this.Controls[ctrNm].Text.Trim() != listBox.SelectedItem.ToString())
                    {
                        this.Controls[ctrNm].Text = listBox.SelectedItem.ToString();
                        this.entity.FromTable     = listBox.SelectedItem.ToString();
                    }
                }
            }
        }
Пример #13
0
        private void DataSourceControl_Load(object sender, EventArgs e)
        {
            _ds = ModelDesignProject.GetDataSourceById(_funNode.Name);
            //数据集节点
            LibTreeNode dsNode = new LibTreeNode();

            dsNode.Name     = _funNode.Name;
            dsNode.Text     = ReSourceManage.GetResource(NodeType.DefDataSet);
            dsNode.NodeType = NodeType.DefDataSet;

            if (_ds.DefTables == null)
            {
                _ds.DefTables = new LibCollection <LibDefineTable>();
                //自定义表节点
                #region
                LibTreeNode defTBNode = new LibTreeNode();
                defTBNode.NodeId   = Guid.NewGuid().ToString();
                defTBNode.Name     = string.Format("{0}", _funNode.Name);
                defTBNode.Text     = string.Format("{0}({1})", _funNode.Text, defTBNode.Name);
                defTBNode.NodeType = NodeType.DefindTable;
                dsNode.Nodes.Add(defTBNode);

                //this._defTBPropertylst = new List<DefTBProperty>();
                DefTBProperty deftbp = new DefTBProperty(defTBNode.NodeId);
                deftbp.Dock = DockStyle.Fill;
                this._defTBPropertylst.Add(deftbp);
                this.splitContainer1.Panel2.Controls.Add(deftbp);

                LibDefineTable definetb = new LibDefineTable();
                definetb.ID          = defTBNode.NodeId;
                definetb.TableName   = defTBNode.Name;
                definetb.DisplayName = defTBNode.Text;
                _ds.DefTables.Add(definetb);

                deftbp.SetPropertyValue(definetb, defTBNode);
                #endregion

                //数据结构表
                #region
                LibTreeNode tablestruc = new LibTreeNode();
                tablestruc.NodeId   = Guid.NewGuid().ToString();
                tablestruc.Name     = string.Format("{0}", _funNode.Name);
                tablestruc.Text     = string.Format("{0}-{1}", "数据表", _funNode.Name);
                tablestruc.NodeType = NodeType.TableStruct;
                defTBNode.Nodes.Add(tablestruc);

                //this._tbStructPropertylst = new List<TBStructProperty>();
                TBStructProperty tbstructP = new TBStructProperty(tablestruc.NodeId);
                tbstructP.Dock = DockStyle.Fill;
                this._tbStructPropertylst.Add(tbstructP);
                this.splitContainer1.Panel2.Controls.Add(tbstructP);


                LibDataTableStruct tbstruct = new LibDataTableStruct();
                tbstruct.ID          = tablestruc.NodeId;
                tbstruct.Name        = tablestruc.Name;
                tbstruct.DisplayName = tablestruc.Text;
                definetb.TableStruct = new LibCollection <LibDataTableStruct>();
                definetb.TableStruct.Add(tbstruct);

                tbstructP.SetPropertyValue(tbstruct, tablestruc);
                #endregion
            }
            else
            {
                LibTreeNode node         = null;
                LibTreeNode dtstructNode = null;
                LibTreeNode fieldNode    = null;
                foreach (LibDefineTable item in _ds.DefTables)
                {
                    node          = new LibTreeNode();
                    node.NodeId   = item.ID;
                    node.Name     = item.TableName;
                    node.Text     = string.Format("{0}({1})", item.DisplayName, item.TableName);
                    node.NodeType = NodeType.DefindTable;
                    dsNode.Nodes.Add(node);
                    if (item.TableStruct != null)
                    {
                        foreach (LibDataTableStruct dtstruct in item.TableStruct)
                        {
                            #region 添加表结构节点
                            dtstructNode          = new LibTreeNode();
                            dtstructNode.NodeId   = dtstruct.ID;
                            dtstructNode.Name     = dtstruct.Name;
                            dtstructNode.Text     = string.Format("{0}-{1}", "数据表", dtstruct.Name);
                            dtstructNode.NodeType = NodeType.TableStruct;
                            node.Nodes.Add(dtstructNode);
                            #endregion
                            if (dtstruct.Fields != null)
                            {
                                foreach (LibField field in dtstruct.Fields)
                                {
                                    #region 添加字段节点
                                    fieldNode          = new LibTreeNode();
                                    fieldNode.NodeId   = field.ID;
                                    fieldNode.Name     = field.Name;
                                    fieldNode.Text     = string.Format("{0}({1})", field.Name, field.DisplayName);
                                    fieldNode.NodeType = NodeType.Field;
                                    dtstructNode.Nodes.Add(fieldNode);
                                    #endregion
                                }
                            }
                        }
                    }
                }
            }
            this.treeView1.Nodes.Add(dsNode);
            this.treeView1.SelectedNode = dsNode;
        }
Пример #14
0
 protected override void DoSetParam(string tag, params object[] param)
 {
     base.DoSetParam(tag, param);
     if (LibSysUtils.Compare(tag, "language"))
     {
         SDPCRL.COM.ModelManager.FormTemplate.LibFormPage fm = null;
         SDPCRL.COM.ModelManager.LibKeyValueCollection    keyValueCollection = null;
         if (param.Length > 1)
         {
             ds = param[0] as LibDataSource;
             fm = param[1] as SDPCRL.COM.ModelManager.FormTemplate.LibFormPage;
             keyValueCollection = param[2] as SDPCRL.COM.ModelManager.LibKeyValueCollection;
         }
         if (keyValueCollection != null)
         {
             this.textBox1.Text = keyValueCollection.ID;
             languagedt         = this.BllData.Getlanguagebydsid(keyValueCollection.ID);
             if (keyValueCollection.KeyValues != null)
             {
                 foreach (LibKeyValue kv in keyValueCollection.KeyValues)
                 {
                     AddDataGridRow(string.Empty, kv.Key.ToString(), kv.Value.ToString());
                 }
             }
         }
         if (ds == null)
         {
             return;
         }
         this.textBox1.Text = ds.DSID;
         this.comboBox1.Items.Add(string.Empty);
         languagedt = this.BllData.Getlanguagebydsid(ds.DSID);
         foreach (LibDefineTable deftb in ds.DefTables)
         {
             foreach (LibDataTableStruct dt in deftb.TableStruct)
             {
                 this.comboBox1.Items.Add(dt.Name);
                 FillDataGrid(dt, false);
             }
         }
         if (fm != null)
         {
             DataTable dt  = this.dataGridView1.DataSource as DataTable;
             DataRow   row = null;
             if (dt != null)
             {
                 AddDataGridRow(string.Empty, fm.FormId, fm.FormName);
                 if (fm.FormGroups != null)
                 {
                     foreach (SDPCRL.COM.ModelManager.FormTemplate.LibFormGroup fg in fm.FormGroups)
                     {
                         AddDataGridRow(string.Empty, fg.FormGroupName, fg.FormGroupDisplayNm);
                     }
                 }
                 if (fm.GridGroups != null)
                 {
                     foreach (SDPCRL.COM.ModelManager.FormTemplate.LibGridGroup gg in fm.GridGroups)
                     {
                         AddDataGridRow(string.Empty, gg.GridGroupName, gg.GridGroupDisplayNm);
                         if (gg.GdButtons == null)
                         {
                             continue;
                         }
                         foreach (LibGridButton item in gg.GdButtons)
                         {
                             AddDataGridRow(string.Empty, item.GridButtonName, item.GridButtonDisplayNm);
                         }
                     }
                 }
                 if (fm.BtnGroups != null)
                 {
                     foreach (LibButtonGroup btngroup in fm.BtnGroups)
                     {
                         if (btngroup.LibButtons == null)
                         {
                             continue;
                         }
                         //if(btngroup .LibButtons !=null )
                         //{
                         foreach (LibButton btn in btngroup.LibButtons)
                         {
                             AddDataGridRow(string.Empty, btn.LibButtonName, btn.LibButtonDisplayNm);
                         }
                         //}
                     }
                 }
             }
         }
     }
 }
Пример #15
0
        public override void TextAndBotton_Click(object sender, EventArgs e)
        {
            Control ctl   = sender as Control;
            string  ctrNm = ctl.Name.Replace(SysConstManage.BtnCtrlNmPrefix, "");
            Panel   p     = new Panel();

            p.Dock       = DockStyle.Fill;
            p.Name       = "pfieldcollection";
            p.AutoScroll = true;
            ListBox listBox = new ListBox();

            listBox.Dock = DockStyle.Fill;
            p.Controls.Add(listBox);
            if (string.Compare(ctrNm, "fsfield_FromDataSource") == 0)//来源数据源
            {
                string[] dsarray = ModelManager.GetAllDataSourceNm(string.Empty);
                if (dsarray != null && dsarray.Length > 0)
                {
                    foreach (string item in dsarray)
                    {
                        listBox.Items.Add(item);
                    }
                }
                FieldCollectionForm fielsform = new FieldCollectionForm(p);
                DialogResult        dialog    = fielsform.ShowDialog(this);
                if (dialog == DialogResult.OK)
                {
                    if (this.Controls[ctrNm].Text.Trim() != listBox.SelectedItem.ToString())
                    {
                        foreach (Control c in this.Controls)
                        {
                            if (c.GetType().Equals(typeof(TextBox)))
                            {
                                c.Text = string.Empty;
                            }
                        }
                        this.Controls[ctrNm].Text  = listBox.SelectedItem.ToString();
                        this.entity.FromDataSource = listBox.SelectedItem.ToString();
                        //this.Controls["fsfield_FromDefindTableNm"].Text = string.Empty;
                        //this.Controls["fsfield_FromStructTableNm"].Text = string.Empty;
                        //this.Controls["fsfield_FromFieldNm"].Text = string.Empty;
                    }
                }
            }
            else if (string.Compare(ctrNm, "fsfield_FromDefindTableNm") == 0)//来源自定义表名
            {
                if (!string.IsNullOrEmpty(this.Controls["fsfield_FromDataSource"].Text))
                {
                    this._ds = ModelManager.GetDataSource(this.Controls["fsfield_FromDataSource"].Text);
                    if (this._ds != null && this._ds.DefTables != null)
                    {
                        foreach (LibDefineTable deftb in this._ds.DefTables)
                        {
                            listBox.Items.Add(deftb.TableName);
                        }
                    }
                }
                FieldCollectionForm fielsform = new FieldCollectionForm(p);
                DialogResult        dialog    = fielsform.ShowDialog(this);
                if (dialog == DialogResult.OK)
                {
                    this.Controls[ctrNm].Text     = listBox.SelectedItem.ToString();
                    this.entity.FromDefindTableNm = listBox.SelectedItem.ToString();
                }
            }
            else if (string.Compare(ctrNm, "fsfield_FromStructTableNm") == 0)//来源数据表名
            {
                if (!string.IsNullOrEmpty(this.Controls["fsfield_FromDefindTableNm"].Text))
                {
                    if (_ds == null)
                    {
                        _ds = ModelManager.GetDataSource(this.Controls["fsfield_FromDataSource"].Text);
                    }
                    LibDefineTable deftb = this._ds.DefTables.FindFirst("TableName", this.Controls["fsfield_FromDefindTableNm"].Text.Trim());
                    if (deftb != null)
                    {
                        foreach (LibDataTableStruct dt in deftb.TableStruct)
                        {
                            listBox.Items.Add(dt.Name);
                        }
                    }
                }
                FieldCollectionForm fielsform = new FieldCollectionForm(p);
                DialogResult        dialog    = fielsform.ShowDialog(this);
                if (dialog == DialogResult.OK)
                {
                    this.Controls[ctrNm].Text     = listBox.SelectedItem.ToString();
                    this.entity.FromStructTableNm = listBox.SelectedItem.ToString();
                    //foreach (LibDataTableStruct item in )
                }
            }
            else if (string.Compare(ctrNm, "fsfield_FromFieldNm") == 0 || string.Compare(ctrNm, "fsfield_FromFieldDesc") == 0)//来源字段
            {
                if (!string.IsNullOrEmpty(this.Controls["fsfield_FromStructTableNm"].Text))
                {
                    if (_ds == null)
                    {
                        _ds = ModelManager.GetDataSource(this.Controls["fsfield_FromDataSource"].Text);
                    }
                    LibDefineTable     deftb    = this._ds.DefTables.FindFirst("TableName", this.Controls["fsfield_FromDefindTableNm"].Text.Trim());
                    LibDataTableStruct dtstruct = deftb.TableStruct.FindFirst("Name", this.Controls["fsfield_FromStructTableNm"].Text.Trim());
                    if (dtstruct != null)
                    {
                        foreach (LibField f in dtstruct.Fields)
                        {
                            listBox.Items.Add(f.Name);
                        }
                    }
                }
                FieldCollectionForm fielsform = new FieldCollectionForm(p);
                DialogResult        dialog    = fielsform.ShowDialog(this);
                if (dialog == DialogResult.OK)
                {
                    this.Controls[ctrNm].Text = listBox.SelectedItem.ToString();
                    if (string.Compare(ctrNm, "fsfield_FromFieldNm") == 0)
                    {
                        this.entity.FromFieldNm = listBox.SelectedItem.ToString();
                    }
                    else
                    {
                        this.entity.FromFieldDesc = listBox.SelectedItem.ToString();
                    }
                }
            }
            else if (string.Compare(ctrNm, "fsfield_RelateFieldNm") == 0)//关联字段
            {
                Panel p2 = new Panel();
                p2.AutoScroll = true;
                LibDataTableStruct        dtstruct = null;
                List <LibDataTableStruct> list     = new List <LibDataTableStruct>();
                //List<LibField> fields = new List<LibField>();
                if (!string.IsNullOrEmpty(this.Controls["fsfield_FromStructTableNm"].Text))
                {
                    if (_ds == null)
                    {
                        _ds = ModelManager.GetDataSource(this.Controls["fsfield_FromDataSource"].Text);
                    }
                    List <int> indexs = null;
                    foreach (LibDefineTable def in _ds.DefTables)
                    {
                        if (def.TableStruct == null)
                        {
                            continue;
                        }
                        list.AddRange(def.TableStruct.ToArray());
                    }
                    LibDefineTable deftb = this._ds.DefTables.FindFirst("TableName", this.Controls["fsfield_FromDefindTableNm"].Text.Trim());
                    dtstruct = deftb.TableStruct.FindFirst("Name", this.Controls["fsfield_FromStructTableNm"].Text.Trim());
                    if (dtstruct != null)
                    {
                        listBox.SelectionMode = SelectionMode.MultiExtended;
                        foreach (LibField f in dtstruct.Fields)
                        {
                            if (this.entity.RelateFieldNm == null || (this.entity.RelateFieldNm != null && this.entity.RelateFieldNm.FirstOrDefault(i => i.FromTableIndex == dtstruct.TableIndex && i.FieldNm == f.Name) == null))
                            {
                                listBox.Items.Add(string.Format("{0}{2}{1}", dtstruct.Name, f.Name, SysConstManage.Point));
                            }
                        }
                        var relatetbs = list.Where(i => i.JoinTableIndex == dtstruct.TableIndex && i.TableIndex != dtstruct.TableIndex && i.Ignore).ToList();
                        while (relatetbs != null && relatetbs.Count > 0)
                        {
                            indexs = new List <int>();
                            foreach (LibDataTableStruct tb in relatetbs)
                            {
                                indexs.Add(tb.TableIndex);
                                foreach (LibField f in tb.Fields)
                                {
                                    if (this.entity.RelateFieldNm == null || (this.entity.RelateFieldNm != null && this.entity.RelateFieldNm.FirstOrDefault(i => i.FromTableIndex == tb.TableIndex && i.FieldNm == f.Name) == null))
                                    {
                                        listBox.Items.Add(string.Format("{0}{2}{1}", tb.Name, f.Name, SysConstManage.Point));
                                    }
                                }
                            }
                            relatetbs = list.Where(i => indexs.Contains(i.JoinTableIndex) && i.TableIndex != i.JoinTableIndex && i.Ignore).ToList();
                        }
                    }
                }
                if (this.entity.RelateFieldNm == null)
                {
                    this.entity.RelateFieldNm = new List <LibRelateField>();
                }
                RelateFieldControl relateFieldControl = new RelateFieldControl(listBox, list, this.entity.RelateFieldNm);
                relateFieldControl.Dock = DockStyle.Fill;
                p2.Controls.Add(relateFieldControl);


                DialogForm dialogForm = new DialogForm(p2);

                DialogResult dialog = dialogForm.ShowDialog(this);
                //FieldCollectionForm fielsform = new FieldCollectionForm(p);
                //DialogResult dialog = fielsform.ShowDialog(this);
                if (dialog == DialogResult.OK)
                {
                    string         text = string.Empty;
                    SplitContainer ctr  = relateFieldControl.Controls["splitContainer1"] as SplitContainer;
                    foreach (Control c in ctr.Panel2.Controls)
                    {
                        RelateFieldProperty prop = c as RelateFieldProperty;
                        prop.GetControlsValue();
                    }
                    foreach (LibRelateField field in this.entity.RelateFieldNm)
                    {
                        if (text.Length > 0)
                        {
                            text += SysConstManage.Comma;
                        }
                        text += field.FieldNm;
                    }
                    //if (this.entity.RelateFieldNm == null) this.entity.RelateFieldNm = new List<LibRelateField>();
                    //this.entity.RelateFieldNm.Clear();
                    //LibRelateField relateField = null;
                    //string text = string.Empty;
                    //string tablenm = string.Empty;
                    //string fldnm = string.Empty;
                    //string[] array;
                    //foreach (var item in listBox.SelectedItems)
                    //{
                    //    array = item.ToString().Split(SysConstManage.Point);
                    //    tablenm = array[0];
                    //    LibDataTableStruct tableStruct = list.FirstOrDefault(i => i.Name == tablenm);
                    //    LibField field = tableStruct.Fields.FindFirst("Name", array[1]);
                    //    relateField = new LibRelateField();
                    //    relateField.ID = Guid.NewGuid().ToString();
                    //    relateField.FieldNm = field.Name;
                    //    relateField.DisplayNm = field.DisplayName;
                    //    relateField.AliasName = field.AliasName;
                    //    relateField.FieldType = field.FieldType;
                    //    relateField.FromTableIndex = tableStruct.TableIndex;
                    //    this.entity.RelateFieldNm.Add(relateField);
                    //    if (text.Length > 0) { text += SysConstManage.Comma; }
                    //    text += field.Name;
                    //}
                    this.Controls[ctrNm].Text = text;
                }
            }
        }