Example #1
0
        /// <summary>
        /// 取得使用到的欄位集合。
        /// </summary>
        /// <param name="tableDefine">資料表定義。</param>
        private GStringHashSet GetUseFields(GTableDefine tableDefine)
        {
            // 取得資料表定義
            var useFieldSet = new GStringHashSet();

            if (StrFunc.StrIsEmpty(this.SelectFields))
            {
                // 包含所有欄位
                foreach (GFieldDefine fieldDefine in tableDefine.Fields)
                {
                    useFieldSet.Add(fieldDefine.FieldName);
                }
            }
            else
            {
                // 加入取回欄位
                useFieldSet.Add(this.SelectFields, ",");
                // 加入篩選欄位
                foreach (GFilterItem filterItem in this.FilterItems)
                {
                    useFieldSet.Add(filterItem.FieldName);
                }
                // 加入排序欄位
                foreach (GSortField sortField in this.SortFields)
                {
                    useFieldSet.Add(sortField.FieldName);
                }
            }
            return(useFieldSet);
        }
Example #2
0
        /// <summary>
        /// 取得關連明細資料表使用欄位集合。
        /// </summary>
        /// <param name="useFields">取得使用的欄位集合。</param>
        /// <param name="detailTableName">傳回明細資料表名稱。</param>
        private GStringHashSet GetUseDetailTableFields(GStringHashSet useFields, out string detailTableName)
        {
            GStringHashSet oUseFields;
            string         sDetailTableName;
            string         sTableName;
            string         sFieldName;

            sDetailTableName = string.Empty;
            oUseFields       = new GStringHashSet();
            foreach (string fieldName in useFields)
            {
                if (StrFunc.StrContains(fieldName, "."))
                {
                    // 折解資料表及欄位名稱
                    StrFunc.StrSplitFieldName(fieldName, out sTableName, out sFieldName);

                    // 主檔不能同時 Join 多個明細資料表
                    if (StrFunc.StrIsNotEmpty(sDetailTableName) && !StrFunc.SameText(sDetailTableName, sTableName))
                    {
                        throw new GException("Master Table can't Join multi Detail Table");
                    }

                    sDetailTableName = sTableName;
                    oUseFields.Add(sFieldName);
                }
            }

            detailTableName = sDetailTableName;
            return(oUseFields);
        }
Example #3
0
        /// <summary>
        /// 取得主要資料表使用欄位集合。
        /// </summary>
        /// <param name="useFields">使用欄位集合。</param>
        private GStringHashSet GetUseTableFields(GStringHashSet useFields)
        {
            var useFieldSet = new GStringHashSet();

            foreach (string fieldName in useFields)
            {
                if (!StrFunc.StrContains(fieldName, "."))
                {
                    useFieldSet.Add(fieldName);
                }
            }
            return(useFieldSet);
        }
Example #4
0
        /// <summary>
        /// 取得關連取回欄位集合。
        /// </summary>
        /// <param name="tableDefine">資料表定義。</param>
        /// <param name="linkFieldName">關連來源欄位。</param>
        /// <param name="useFields">使用到的欄位集合。</param>
        private GStringHashSet GetReturnFields(GTableDefine tableDefine, string linkFieldName, GStringHashSet useFields)
        {
            GStringHashSet oReturnFields;
            GFieldDefine   oFieldDefine;

            oReturnFields = new GStringHashSet();
            foreach (string fieldName in useFields)
            {
                oFieldDefine = tableDefine.Fields[fieldName];
                if (oFieldDefine.FieldType == EFieldType.LinkField && StrFunc.SameText(oFieldDefine.LinkFieldName, linkFieldName))
                {
                    oReturnFields.Add(fieldName);
                }
            }
            return(oReturnFields);
        }