示例#1
0
        /// <summary>
        /// 加入關連欄位
        /// </summary>
        /// <param name="fields"></param>
        /// <param name="linkProgID"></param>
        /// <param name="linkDisplayName"></param>
        private void AddLinkReturnField(GFieldDefineCollection fields, GProgramDefine linkProgDefine)
        {
            var linkProgID      = linkProgDefine.ProgID;
            var linkDisplayName = linkProgDefine.DisplayName;

            var linkField = new GFieldDefine {
                FieldName = $"{linkProgID}ID", DisplayName = $"{linkDisplayName}編號", MaxLength = 10, LinkProgID = linkProgID
            };

            linkField.LinkReturnFields.Add(new GLinkReturnField {
                SourceField = SysFields.ID, DestField = $"{linkProgID}ID"
            });
            linkField.LinkReturnFields.Add(new GLinkReturnField {
                SourceField = SysFields.ViewID, DestField = $"TMP_{linkProgID}ID"
            });
            linkField.LinkReturnFields.Add(new GLinkReturnField {
                SourceField = SysFields.Name, DestField = $"TMP_{linkProgID}Name"
            });
            fields.Add(linkField);
            fields.Add(new GFieldDefine {
                FieldName = $"TMP_{linkProgID}ID", DisplayName = $"{linkDisplayName}代碼", FieldType = EFieldType.LinkField, LinkFieldName = $"{linkProgID}ID"
            });
            fields.Add(new GFieldDefine {
                FieldName = $"TMP_{linkProgID}Name", DisplayName = $"{linkDisplayName}名稱", FieldType = EFieldType.LinkField, LinkFieldName = $"{linkProgID}ID"
            });
        }
示例#2
0
        /// <summary>
        /// 建置資料表關連資訊。
        /// </summary>
        /// <param name="programDefine">程式定義。</param>
        /// <param name="tableName">資料表名稱。</param>
        /// <param name="selectFields">取回欄位集合字串。</param>
        /// <param name="filterItems">過濾條件項目集合。</param>
        /// <param name="sortFields">排序欄位集合。</param>
        public void Execute(GProgramDefine programDefine, string tableName, string selectFields, GFilterItemCollection filterItems, GSortFieldCollection sortFields)
        {
            this.ProgramDefine = programDefine;
            this.TableName     = tableName;
            var oBuilder = new GTableJoinBuilder(programDefine, tableName, selectFields, filterItems, sortFields);

            oBuilder.Execute(this);
        }
示例#3
0
 /// <summary>
 /// 建構函式。
 /// </summary>
 /// <param name="programDefine">程式定義。</param>
 /// <param name="tableName">資料表名稱。</param>
 /// <param name="selectFields">取回欄位集合字串。</param>
 /// <param name="filterItems">過濾條件項目集合。</param>
 /// <param name="sortFields">排序欄位集合。</param>
 public GTableJoinBuilder(GProgramDefine programDefine, string tableName, string selectFields, GFilterItemCollection filterItems, GSortFieldCollection sortFields)
 {
     ProgramDefine = programDefine;
     TableName     = tableName;
     SelectFields  = selectFields;
     FilterItems   = filterItems;
     SortFields    = sortFields;
 }
示例#4
0
        public void DoCreateProgramDefine()
        {
            var helper = new InitDataHelper();

            var progDefine = new GProgramDefine();

            Console.WriteLine("ProgID:");
            progDefine.ProgID = Console.ReadLine();
            Console.WriteLine("DisplayName:");
            progDefine.DisplayName = Console.ReadLine();
            Console.WriteLine("Start Create Table");
            var tableDefine = new GTableDefine();

            tableDefine.PrimaryKey = progDefine.ProgID + "Id";
            progDefine.Tables.Add(tableDefine);
            Console.WriteLine("TableName:");
            tableDefine.TableName = Console.ReadLine();
            Console.WriteLine("DbTableName:");
            tableDefine.DbTableName = Console.ReadLine();
            Console.WriteLine("Table DisplayName:");
            tableDefine.DisplayName = Console.ReadLine();
            var createField = true;

            while (createField)
            {
                Console.WriteLine("Start Create Field Define");
                var fieldDefine = new GFieldDefine();
                tableDefine.Fields.Add(fieldDefine);
                Console.WriteLine("FieldName:");
                fieldDefine.FieldName = Console.ReadLine();
                Console.WriteLine("DisplayName:");
                fieldDefine.DisplayName = Console.ReadLine();
                Console.WriteLine("DbType:");
                Console.WriteLine("(0:String, 1:Text, 2:Boolean, 3:Integer, 4:Double, 5:Currency, 6:DateTime, 7:GUID, 8:Binary)");
                var dbType = int.Parse(Console.ReadLine());
                fieldDefine.DbType = BaseFunc.CEnum <EFieldDbType>(dbType, 0);
                Console.WriteLine("MaxLength:");
                fieldDefine.MaxLength = int.Parse(Console.ReadLine());
                Console.WriteLine("AllowNull:(0: false, 1: true)");
                fieldDefine.AllowNull = BaseFunc.CBool(Console.ReadLine());
                Console.WriteLine("LinkFieldName:");
                fieldDefine.LinkFieldName = Console.ReadLine();
                Console.WriteLine("LinkProgID:");
                fieldDefine.LinkProgID = Console.ReadLine();
                Console.WriteLine("Continue Create Field Define? 1:Yes? 0:No?");
                var ans = Console.ReadLine();
                if (ans.SameTextOr("No", "0"))
                {
                    createField = false;
                }
                Console.WriteLine("================================================");
            }

            helper.ProgDefineToJson(progDefine);
            Console.WriteLine($"已產生程式定義檔案:{progDefine.ProgID}/{progDefine.DisplayName}");
            Console.ReadKey();
        }
示例#5
0
 /// <summary>
 /// 建構式。
 /// </summary>
 /// <param name="helper">資料庫命令輔助類別介面。</param>
 /// <param name="programDefine">程式定義。</param>
 /// <param name="tableName">資料表名稱。</param>
 /// <param name="tableJoinProvider">資料表關連資訊提供者。</param>
 /// <param name="filterItems">資料過濾條件項目集合。</param>
 /// <param name="sessionInfo">存取連線相關資料的輔助類別。</param>
 /// <param name="enableDbParameter">過濾條件是否啟用 DB 參數。</param>
 public GFilterInputArgs(IDbCommandHelper helper, GProgramDefine programDefine, string tableName, GTableJoinProvider tableJoinProvider, GFilterItemCollection filterItems, GSessionInfo sessionInfo, bool enableDbParameter)
 {
     DbCommandHelper   = helper;
     ProgramDefine     = programDefine;
     TableName         = tableName;
     TableJoinProvider = tableJoinProvider;
     FilterItems       = filterItems;
     SessionInfo       = sessionInfo;
     EnableDbParameter = enableDbParameter;
 }
示例#6
0
        /// <summary>
        /// 程式定義轉XML
        /// </summary>
        /// <param name="programDefine"></param>
        public void ProgDefineToJson(GProgramDefine programDefine)
        {
            this.SaveDefineHelper.SaveDefine(programDefine);

            var dbDefines = DefineFunc.ProgDefineToDbTableDefine(programDefine);

            foreach (var d in dbDefines)
            {
                this.SaveDefineHelper.SaveDefine(d);
            }
        }
示例#7
0
        /// <summary>
        /// 產生程式定義
        /// </summary>
        /// <param name="progID"></param>
        /// <param name="displayName"></param>
        /// <returns></returns>
        private GProgramDefine CreateProgDefines(string progID, string displayName)
        {
            var progDefine = new GProgramDefine {
                ProgID = progID, DisplayName = displayName
            };
            var tableDefine = new GTableDefine {
                TableName = progID, DisplayName = displayName, DbTableName = progID, PrimaryKey = $"{progID}ID"
            };

            tableDefine.Fields.Add(new GFieldDefine {
                FieldName = SysFields.CompanyID, DisplayName = $"公司編號", MaxLength = 10
            });
            tableDefine.Fields.Add(new GFieldDefine {
                FieldName = SysFields.ID, DisplayName = $"{displayName}編號", MaxLength = 10
            });
            tableDefine.Fields.Add(new GFieldDefine {
                FieldName = SysFields.ViewID, DisplayName = $"{displayName}代碼", MaxLength = 10
            });
            tableDefine.Fields.Add(new GFieldDefine {
                FieldName = SysFields.Name, DisplayName = $"{displayName}名稱", MaxLength = 10
            });
            progDefine.Tables.Add(tableDefine);
            return(progDefine);
        }
示例#8
0
 /// <summary>
 /// 建構函式。
 /// </summary>
 /// <param name="sessionGuid">連線識別。</param>
 /// <param name="programDefine">程式定義。</param>
 public GOracleCommandBuilder(Guid sessionGuid, GProgramDefine programDefine)
     : base(sessionGuid, programDefine)
 {
 }
示例#9
0
        /// <summary>
        /// 建立資料庫命令產生器。
        /// </summary>
        /// <param name="sessionInfo">連線資訊。</param>
        /// <param name="programDefine">程式定義。</param>
        public static IDbCommandBuilder CreateDbCommandBuilder(GSessionInfo sessionInfo, GProgramDefine programDefine)
        {
            string sMessage;

            switch (sessionInfo.DatabaseType)
            {
            case EDatabaseType.SQLServer:
                return(new GSqlCommandBuilder(sessionInfo.SessionGuid, programDefine));

            case EDatabaseType.Oracle:
                return(new GOracleCommandBuilder(sessionInfo.SessionGuid, programDefine));

            default:
                sMessage = StrFunc.StrFormat(@"DatabaseType={0} Not Supported IDbCommandBuilder", BaseFunc.GetEnumName(sessionInfo.DatabaseType));
                throw new NotSupportedException(sMessage);
            }
        }
示例#10
0
 /// <summary>
 /// 建構函式。
 /// </summary>
 /// <param name="programDefine">程式定義。</param>
 public GBaseDbCommandBuilder(Guid sessionGuid, GProgramDefine programDefine) : base(sessionGuid)
 {
     this.ProgramDefine = programDefine;
 }