Beispiel #1
0
        private static string BuildConditionItemByStatisticsColumn(MDQuery_ConditionItem _cItem, MDModel_QueryModel _qv)
        {
            switch (_cItem.Column.ColumnDataType.ToUpper())
            {
            case "DATE":         //日期型
            case "DATETIME":
            case "TIMESTAMP":
                return(BuildDateFieldQueryCondition(_cItem));

            case "NUMBER":     //数值型
            case "INT":
            case "TINYINT":
                return(BuildNumberFieldCondition(_cItem, _qv));

            case "CHAR":
            case "VARCHAR":
            case "NVARCHAR":
            case "NVARCHAR2":
            case "VARCHAR2":
                return(BuildCharFieldCondition(_cItem, _qv));

            default:
                throw new Exception(string.Format("以{0}类型字段做条件的查询功能尚未实现.", _cItem.Column.ColumnDataType));
            }
        }
Beispiel #2
0
        private static string BuildConditionItemByCalculationColumn(MDQuery_ConditionItem _cItem, MDModel_QueryModel _qv)
        {
            switch (_cItem.Column.ColumnDataType.ToUpper())
            {
            case "DATE":         //日期型
                return(BuildDateFieldQueryCondition(_cItem));

                break;

            case "NUMBER":     //数值型
                return(BuildNumberFieldCondition(_cItem, _qv));

                break;

            case "CHAR":
            case "VACHAR":
            case "NVARCHAR":
            case "NVARCHAR2":
            case "VARCHAR2":
                return(BuildCharFieldCondition(_cItem, _qv));

                break;

            default:
                throw new Exception(string.Format("以{0}类型字段做条件的查询功能尚未实现.", _cItem.Column.ColumnDataType));
                break;
            }
            return("");
        }
Beispiel #3
0
 public override void SetInputValue(MDQuery_ConditionItem _columnCodition)
 {
     this.teOption.EditValue = _columnCodition.Operator;
     this.CaseSensitive      = _columnCodition.CaseSensitive;
     this.te_xh.Text         = _columnCodition.ColumnIndex;
     refCodeBox1.SetValues(_columnCodition.Values);
 }
 public SinoSZUC_ConditionItem(MDQuery_ConditionItem _citem)
 {
     InitializeComponent();
     ColumnDefine = null;
     ShowValue(_citem);
     InitFinished = true;
 }
Beispiel #5
0
        public void AddCondition(MDQuery_ConditionItem _tc)
        {
            SinoSZUC_ConditionItem _item = new SinoSZUC_ConditionItem(_tc);

            _item.Dock = DockStyle.Top;
            this.xtraScrollableControl1.Controls.Add(_item);
        }
        public void AddConditonItem(MDQuery_ConditionItem _conditionItem)
        {
            if (this.queryRequest.ConditionItems == null)
            {
                this.queryRequest.ConditionItems = new List <MDQuery_ConditionItem>();
            }

            this.queryRequest.ConditionItems.Add(_conditionItem);
        }
Beispiel #7
0
 public void InsertConditions2QueryRequest(MC_QueryRequsetFactory _queryRequestFactory)
 {
     _queryRequestFactory.AddExpression(this.textEdit1.EditValue.ToString());
     foreach (SinoSZUC_ConditionItem _c in this.xtraScrollableControl1.Controls)
     {
         MDQuery_ConditionItem _cItem = _c.GetConditionItem();
         _queryRequestFactory.AddConditonItem(_cItem);
     }
 }
Beispiel #8
0
        /// <summary>
        /// 构建日期型字段条件的表达式
        /// </summary>
        /// <param name="_cItem"></param>
        /// <returns></returns>
        private static string BuildDateFieldConditon_Table(MDQuery_ConditionItem _cItem, string _fieldStr)
        {
            string DateFirst = string.Format("to_date('{0}','YYYY-MM-DD')", _cItem.Values[0]);
            string DateEnd   = string.Format("to_date('{0}235959','YYYY-MM-DDhh24miss')", _cItem.Values[0]);

            switch (_cItem.Operator)
            {
            case "等于":
                return(string.Format("{0} between {1} and {2} ", _fieldStr, DateFirst, DateEnd));

            case "时间段":
                #region 处理时间段
                string enddate = string.Format("to_date('{0}235959','YYYY-MM-DDhh24miss')", _cItem.Values[1]);
                return(string.Format(" {0} between {1} and {2} ", _fieldStr, DateFirst, enddate));

                #endregion

            case "集合":
                #region 处理时间集合
                string _collectionStr = string.Format(" {0} in (", _fieldStr);
                string _fg            = "";
                foreach (string _dateStr in _cItem.Values)
                {
                    _collectionStr += string.Format("{0}to_date('{1}','YYYY-MM-DD')", _fg, _dateStr);
                    _fg             = ",";
                }
                _collectionStr += ") ";
                return(_collectionStr);

                #endregion

            case "不等于":
                return(string.Format("{0} not between {1} and {2} ", _fieldStr, DateFirst, DateEnd));

            case "大于":
                return(string.Format("{0} > {1} ", _fieldStr, DateEnd));

            case "大于等于":
                return(string.Format("{0} >= {1} ", _fieldStr, DateFirst));

            case "小于":
                return(string.Format("{0} < {1} ", _fieldStr, DateFirst));

            case "小于等于":
                return(string.Format("{0} <= {1} ", _fieldStr, DateEnd));

                break;

            case "为空值":
                return(string.Format(" {0} is null ", _fieldStr));

            case "为非空值":
                return(string.Format(" {0} is not null ", _fieldStr));
            }
            return("");
        }
Beispiel #9
0
        private static string BuildCharFieldCondition_Method(MDQuery_ConditionItem _cItem, MDModel_QueryModel _qv, string _fieldStr)
        {
            MDModel_Table _table;
            string        _tname = _cItem.Column.TableName;

            if (_qv.MainTable.TableName == _tname)
            {
                _table = _qv.MainTable;
            }
            else
            {
                _table = (from _c in _qv.ChildTables
                          where _c.TableName == _tname
                          select _c).First();
            }


            //普通字符型
            switch (_cItem.Operator)
            {
            case "等于":
                return(string.Format("{0} ='{1}' ", _fieldStr, _cItem.Values[0]));

            case "不等于":
                return(string.Format("{0} <>'{1}' ", _fieldStr, _cItem.Values[0]));

            case "包含":
                return(string.Format("{0} like '%{1}%' ", _fieldStr, _cItem.Values[0]));

            case "匹配":
                return(string.Format("{0} like '{1}' ", _fieldStr, _cItem.Values[0]));

            case "集合":
                #region 处理集合
                string _collectionStr = string.Format(" {0} in (", _fieldStr);
                string _fg            = "";
                foreach (string _dateStr in _cItem.Values)
                {
                    _collectionStr += string.Format("{0}'{1}'", _fg, _dateStr);
                    _fg             = ",";
                }
                _collectionStr += ") ";
                return(_collectionStr);

                #endregion

            case "为空值":
                return(string.Format(" {0} is null ", _fieldStr));

            case "为非空值":
                return(string.Format(" {0} is not null ", _fieldStr));
            }
            return("");
        }
Beispiel #10
0
        /// <summary>
        /// 取条件项字符串
        /// </summary>
        /// <param name="_qv"></param>
        /// <param name="_queryRequest"></param>
        /// <param name="_itemIndex"></param>
        /// <returns></returns>
        private static string GetConditionStr(MDModel_QueryModel _qv, MDQuery_Request _queryRequest, string _itemIndex)
        {
            MDQuery_ConditionItem _cItem = _queryRequest.GetConditionItemByIndex(_itemIndex);

            if (_cItem == null)
            {
                throw new Exception(string.Format("缺少编号为{0}的条件项!", _itemIndex));
            }
            else
            {
                return(SQLConditionItemBuilder.BuildConditionItemString(_cItem, _qv));
            }
        }
        /// <summary>
        /// 构建数值型字段条件的表达式
        /// </summary>
        /// <param name="_cItem"></param>
        /// <returns></returns>
        private static string BuildNumberFieldCondition(MDQuery_ConditionItem _cItem)
        {
            string _fieldStr = string.Format("{0}.{1} ", _cItem.Column.TableName, _cItem.Column.ColumnName);

            switch (_cItem.Operator)
            {
            case "等于":
                return(string.Format("{0} = {1} ", _fieldStr, _cItem.Values[0]));

            case "不等于":
                return(string.Format("{0} <> {1} ", _fieldStr, _cItem.Values[0]));

            case "大于":
                return(string.Format("{0} > {1} ", _fieldStr, _cItem.Values[0]));

            case "大于等于":
                return(string.Format("{0} >= {1} ", _fieldStr, _cItem.Values[0]));

            case "小于":
                return(string.Format("{0} < {1} ", _fieldStr, _cItem.Values[0]));

            case "小于等于":
                return(string.Format("{0} <= {1} ", _fieldStr, _cItem.Values[0]));

                break;

            case "集合":
                #region 处理集合
                string _collectionStr = " (";
                string _fg            = "";
                foreach (string _dateStr in _cItem.Values)
                {
                    _collectionStr += string.Format(" {2} {0}={1} ", _fieldStr, _dateStr, _fg);
                    _fg             = " or ";
                }
                _collectionStr += ") ";
                return(_collectionStr);

                #endregion

            case "范围":
                return(string.Format("{0}>= {1} and {0}<={2} ", _fieldStr, _cItem.Values[0], _cItem.Values[1]));

            case "为空值":
                return(string.Format(" {0} is null ", _fieldStr));

            case "为非空值":
                return(string.Format(" {0} is not null ", _fieldStr));
            }
            return("");
        }
Beispiel #12
0
        /// <summary>
        /// 取条件项字符串
        /// </summary>
        /// <param name="_qv"></param>
        /// <param name="_queryRequest"></param>
        /// <param name="_itemIndex"></param>
        /// <returns></returns>
        private static string GetConditionStr(MDModel_QueryModel _qv, MDQuery_Request _queryRequest, string _itemIndex)
        {
            var _find = from _c in _queryRequest.ConditionItems
                        where _c.ColumnIndex == _itemIndex
                        select _c;

            if (_find == null || _find.Count() < 1)
            {
                throw new Exception(string.Format("缺少编号为{0}的条件项!", _itemIndex));
            }
            else
            {
                MDQuery_ConditionItem _cItem = _find.First();
                return(MySqlConditionItemBuilder.BuildConditionItemString(_cItem, _qv));
            }
        }
Beispiel #13
0
        public static string BuildConditionItemString(MDQuery_ConditionItem _cItem, MDModel_QueryModel _qv)
        {
            switch (_cItem.Column.ColumnType)
            {
            case QueryColumnType.TableColumn:
                return(BuildConditionItemByTableColumn(_cItem, _qv));

            case QueryColumnType.CalculationColumn:
                return(BuildConditionItemByCalculationColumn(_cItem, _qv));


            case QueryColumnType.StatisticsColumn:
                return(BuildConditionItemByStatisticsColumn(_cItem, _qv));
            }
            return("");
        }
        private void ShowValue(MDQuery_ConditionItem _citem)
        {
            this.teColName.EditValue = _citem.Column.ColumnTitle;
            this.teOption.EditValue  = _citem.Operator;
            string _valueStr = "";
            string _fg       = "";

            foreach (string _s in _citem.Values)
            {
                _valueStr += string.Format("{0}{1}", _fg, _s);
                _fg        = ",";
            }
            this.te_Value.EditValue           = _valueStr;
            this.te_Value.Properties.ReadOnly = true;
            this.te_xh.EditValue = _citem.ColumnIndex;
        }
        /// <summary>
        /// 构建查询条件项的语句
        /// </summary>
        /// <param name="_cItem"></param>
        /// <param name="_qv"></param>
        /// <returns></returns>
        internal static string BuildConditionItemString(MDQuery_ConditionItem _cItem, MDModel_QueryModel _qv)
        {
            switch (_cItem.Column.ColumnType)
            {
            case QueryColumnType.TableColumn:
                return(BuildConditionItemByTableColumn(_cItem, _qv));

            case QueryColumnType.CalculationColumn:
                throw new Exception("以计算项做条件的查询功能尚未实现.");
                break;

            case QueryColumnType.StatisticsColumn:
                throw new Exception("以统计项做条件的查询功能尚未实现.");
                break;
            }
            return("");
        }
Beispiel #16
0
        public static MDQuery_Request RuleToQueryRequest(MD_CheckRule _rule, MDModel_QueryModel _queryModel, MDQuery_Request filter_Request)
        {
            MDQuery_Request _ret = new MDQuery_Request();

            _ret.ChildResultTables    = new List <MDQuery_ResultTable>();
            _ret.QueryModelName       = _rule.QueryModelName;
            _ret.ConditionExpressions = StrUtils.GetMetaByName("C_BDS", _rule.MethodDefine);
            MDQuery_ResultTable _restable = new MDQuery_ResultTable();

            _restable.TableName    = _queryModel.MainTable.TableName;
            _restable.DisplayTitle = _queryModel.DisplayName;
            _restable.Columns      = new List <MDQuery_TableColumn>();
            _ret.MainResultTable   = _restable;
            if (_ret.ConditionItems == null)
            {
                _ret.ConditionItems = new List <MDQuery_ConditionItem>();
            }
            foreach (string _field in StrUtils.GetMetasByName("C_FIELD", _rule.MethodDefine))
            {
                string _index = StrUtils.GetMetaByName("MII_INDEX", _field);
                MDQuery_ConditionItem _citem = new MDQuery_ConditionItem();
                _citem.Operator = StrUtils.GetMetaByName("MII_OPER", _field).TrimStart().TrimEnd();
                MDModel_Table_Column _columnDefine = GetColumn(StrUtils.GetMetaByName("MII_FIELD", _field), _queryModel);
                _citem.Column = new MDQuery_TableColumn(_columnDefine);
                _ret.ConditionItems.Add(_citem);
                _citem.Values      = GetValues(StrUtils.GetMetaByName("MII_VALUE", _field), (_columnDefine.ColumnRefDMB != ""));
                _citem.ColumnIndex = _index;
            }
            if (filter_Request != null && filter_Request.ConditionItems.Count > 0)
            {
                int _oldcount = _ret.ConditionItems.Count;
                _ret.ConditionExpressions = string.Format("({0})", _ret.ConditionExpressions);
                foreach (MDQuery_ConditionItem _fci in filter_Request.ConditionItems)
                {
                    MDQuery_ConditionItem _citem = new MDQuery_ConditionItem();
                    _citem.Operator      = _fci.Operator;
                    _citem.Column        = _fci.Column;
                    _citem.Values        = _fci.Values;
                    _citem.CaseSensitive = _fci.CaseSensitive;
                    _citem.ColumnIndex   = (int.Parse(_fci.ColumnIndex) + _oldcount).ToString();
                    _ret.ConditionItems.Add(_citem);
                    _ret.ConditionExpressions += string.Format("*{0}", _citem.ColumnIndex);
                }
            }
            return(_ret);
        }
Beispiel #17
0
        private static string BuildCharFieldCondition(MDQuery_ConditionItem _cItem, MDModel_QueryModel _qv)
        {
            string _fieldStr;

            switch (_cItem.Column.ColumnType)
            {
            case QueryColumnType.TableColumn:
                _fieldStr = string.Format("{0}.{1} ", _cItem.Column.TableName, _cItem.Column.ColumnName);
                return(BuildCharFieldCondition_Table(_cItem, _qv, _fieldStr));

            case QueryColumnType.CalculationColumn:
            case QueryColumnType.StatisticsColumn:
                _fieldStr = string.Format("({0}) ", _cItem.Column.ColumnAlgorithm);
                return(BuildCharFieldCondition_Method(_cItem, _qv, _fieldStr));
            }
            return("");
        }
        public void InsertConditions2QueryRequest(MC_QueryRequsetFactory _queryRequestFactory)
        {
            string _expression = "";
            string _fg         = "";

            foreach (SinoSZUC_ConditionItem _c in this.xtraScrollableControl1.Controls)
            {
                string _msg = "";
                if (_c.CheckInput(ref _msg))
                {
                    MDQuery_ConditionItem _cItem = _c.GetConditionItem();
                    _queryRequestFactory.AddConditonItem(_cItem);
                    _expression += string.Format("{0}{1}", _fg, _cItem.ColumnIndex);
                    _fg          = "*";
                }
            }
            _queryRequestFactory.AddExpression(_expression);
        }
        private MDQuery_Request CreateZGDQueryRequest(string _dh, DateTime _sdate, DateTime _edate)
        {
            string                 _qvName = "HG_GDFS.海关报关单";
            MDModel_QueryModel     _qv     = MetaDataCache.GetQueryModelDefine(_qvName);
            MC_QueryRequsetFactory _rf     = new MC_QueryRequsetFactory();

            _rf.QueryModelName = _qvName;
            //加条件
            MDQuery_ConditionItem _cItem = new MDQuery_ConditionItem();

            _cItem.ColumnIndex = "1";
            _cItem.Column      = new MDQuery_TableColumn(_qv.MainTable.GetColumnByName("VOYAGE_NO"));
            _cItem.Operator    = "等于";
            _cItem.Values      = new List <string>();
            _cItem.Values.Add(_dh);
            _rf.AddConditonItem(_cItem);

            _cItem             = new MDQuery_ConditionItem();
            _cItem.ColumnIndex = "2";
            _cItem.Column      = new MDQuery_TableColumn(_qv.MainTable.GetColumnByName("D_DATE"));
            _cItem.Operator    = "时间段";
            _cItem.Values      = new List <string>();
            _cItem.Values.Add(_sdate.ToString("yyyyMMdd"));
            _cItem.Values.Add(_edate.ToString("yyyyMMdd"));
            _rf.AddConditonItem(_cItem);
            _rf.AddExpression("1*2");

            //加结果
            _rf.AddResultTable(_qv.MainTable);
            foreach (MDModel_Table_Column _tc in _qv.MainTable.Columns)
            {
                _rf.AddResultTableColumn(_qv.MainTable, _tc);
            }
            foreach (string _cTName in _qv.ChildTableDict.Keys)
            {
                MDModel_Table _ctable = _qv.ChildTableDict[_cTName];
                _rf.AddResultTable(_ctable);
                foreach (MDModel_Table_Column _ccol in _ctable.Columns)
                {
                    _rf.AddResultTableColumn(_ctable, _ccol);
                }
            }
            return(_rf.GetQueryRequest());
        }
        /// <summary>
        /// 取用户输入的查询条件项
        /// </summary>
        /// <returns></returns>
        virtual public MDQuery_ConditionItem GetConditionItem()
        {
            string _emsg = "";

            if (CheckInput(ref _emsg))
            {
                MDQuery_ConditionItem _ret = new MDQuery_ConditionItem();
                _ret.ColumnIndex   = this.te_xh.Text;
                _ret.Column        = new MDQuery_TableColumn(ColumnDefine);
                _ret.Operator      = GetOperator();
                _ret.Values        = GetConditionValues();
                _ret.CaseSensitive = this.CaseSensitive;
                return(_ret);
            }
            else
            {
                return(null);
            }
        }
Beispiel #21
0
        public void InsertConditions2QueryRequest(MC_CompareRequsetFactory _compareRequestFactory)
        {
            string _filterExp = (this.textEdit1.EditValue == null) ? "" : this.textEdit1.EditValue.ToString();

            _compareRequestFactory.AddExpression(_filterExp);
            foreach (SinoSZUC_ConditionItem _c in this.xtraScrollableControl1.Controls)
            {
                MDQuery_ConditionItem _cItem = _c.GetConditionItem();
                _compareRequestFactory.AddConditonItem(_cItem);
            }

            string _compareExp = (this.textEdit2.EditValue == null) ? "" : this.textEdit2.EditValue.ToString();

            _compareRequestFactory.AddCompareExpression(_compareExp);
            foreach (SinoSZUC_CompareConditionItem _c in this.xtraScrollableControl2.Controls)
            {
                MDCompare_ConditionItem _cItem = _c.GetCompareConditionItem();
                _compareRequestFactory.AddCompareConditonItem(_cItem);
            }
        }
 virtual public void SetInputValue(MDQuery_ConditionItem _columnCodition)
 {
     this.teOption.EditValue = _columnCodition.Operator;
     this.CaseSensitive      = _columnCodition.CaseSensitive;
     this.te_xh.Text         = _columnCodition.ColumnIndex;
     if (_columnCodition.Values.Count > 1)
     {
         string _valuestr = "";
         string _fg       = "";
         foreach (string _v in _columnCodition.Values)
         {
             _valuestr += string.Format("{0}{1}", _fg, _v);
             _fg        = ",";
         }
         this.te_Value.EditValue = _valuestr;
     }
     else
     {
         this.te_Value.EditValue = _columnCodition.Values[0];
     }
 }
Beispiel #23
0
        private void AddSavedCondition(MDModel_Table_Column _tc, MDQuery_ConditionItem _columnCodition)
        {
            SinoSZUC_ConditionItem _item = null;

            switch (_tc.ColumnDataType.ToUpper())
            {
            case "DATE":
                _item = new SinoSZUC_ConditionItem_Date(_tc);
                break;

            case "NUMBER":
                _item = new SinoSZUC_ConditionItem_Number(_tc);
                break;

            default:
                if (_tc.ColumnDefine.TableColumn.RefDMB != "")
                {
                    _item = new SinoSZUC_ConditionItem_RefCode(_tc);
                }
                else
                {
                    _item = new SinoSZUC_ConditionItem(_tc);
                }
                break;
            }

            if (_item != null)
            {
                _item.Dock = DockStyle.Top;
                this.xtraScrollableControl1.Controls.Add(_item);
                _item.GetFocused      += new EventHandler <EventArgs>(_item_GetFocused);
                _item.LoseFocused     += new EventHandler <EventArgs>(_item_LoseFocused);
                _item.RemoveCondition += new EventHandler <EventArgs>(_item_RemoveCondition);
                _item.SendToBack();
                this.xtraScrollableControl1.ScrollControlIntoView(_item);

                _item.SetInputValue(_columnCodition);
            }
        }
        private MDQuery_Request CreateBGDQueryRequest(string _dh)
        {
            string                 _qvName = "HG_GDFS.海关报关单";
            MDModel_QueryModel     _qv     = MetaDataCache.GetQueryModelDefine(_qvName);
            MC_QueryRequsetFactory _rf     = new MC_QueryRequsetFactory();

            _rf.QueryModelName = _qvName;
            //加条件
            MDQuery_ConditionItem _cItem = new MDQuery_ConditionItem();

            _cItem.ColumnIndex = "1";
            _cItem.Column      = new MDQuery_TableColumn(_qv.MainTable.GetColumnByName("ENTRY_ID_14"));
            _cItem.Operator    = "等于";
            _cItem.Values      = new List <string>();
            foreach (string _s in _dh.Split(','))
            {
                _cItem.Values.Add(_s);
            }
            _rf.AddConditonItem(_cItem);
            _rf.AddExpression("1");

            //加结果
            _rf.AddResultTable(_qv.MainTable);
            foreach (MDModel_Table_Column _tc in _qv.MainTable.Columns)
            {
                _rf.AddResultTableColumn(_qv.MainTable, _tc);
            }
            foreach (string _cTName in _qv.ChildTableDict.Keys)
            {
                MDModel_Table _ctable = _qv.ChildTableDict[_cTName];
                _rf.AddResultTable(_ctable);
                foreach (MDModel_Table_Column _ccol in _ctable.Columns)
                {
                    _rf.AddResultTableColumn(_ctable, _ccol);
                }
            }
            return(_rf.GetQueryRequest());
        }
        private MDQuery_Request CreateBGDQueryRequest2(DateTime I_E_Date, string _IEFlagNum, string _formID)
        {
            string                 _qvName = "HG_GDFS.海关报关单";
            MDModel_QueryModel     _qv     = MetaDataCache.GetQueryModelDefine(_qvName);
            MC_QueryRequsetFactory _rf     = new MC_QueryRequsetFactory();

            _rf.QueryModelName = _qvName;
            //加条件  D_Date> I_E_DATE-半年
            MDQuery_ConditionItem _cItem_startDate = new MDQuery_ConditionItem();

            _cItem_startDate.ColumnIndex = "1";
            _cItem_startDate.Column      = new MDQuery_TableColumn(_qv.MainTable.GetColumnByName("D_DATE"));
            _cItem_startDate.Operator    = "大于";
            _cItem_startDate.Values      = new List <string>();
            DateTime _startDate = I_E_Date.AddMonths(-6);

            _cItem_startDate.Values.Add(_startDate.ToString("yyyyMMdd"));
            _rf.AddConditonItem(_cItem_startDate);

            //加条件 ENTRY_ID_SHORT = 进出口标志+单证号
            MDQuery_ConditionItem _cItem = new MDQuery_ConditionItem();

            _cItem.ColumnIndex = "2";
            _cItem.Column      = new MDQuery_TableColumn(_qv.MainTable.GetColumnByName("ENTRY_ID_SHORT"));
            _cItem.Operator    = "等于";
            _cItem.Values      = new List <string>();
            _cItem.Values.Add(string.Format("{0}{1}", _IEFlagNum, _formID));
            _rf.AddConditonItem(_cItem);

            //加条件 D_DATE<I_E_DATE
            MDQuery_ConditionItem _cItem_endDate = new MDQuery_ConditionItem();

            _cItem_endDate.ColumnIndex = "3";
            _cItem_endDate.Column      = new MDQuery_TableColumn(_qv.MainTable.GetColumnByName("D_DATE"));
            _cItem_endDate.Operator    = "小于";
            _cItem_endDate.Values      = new List <string>();
            DateTime _endDate = I_E_Date.AddDays(1);

            _cItem_endDate.Values.Add(_endDate.ToString("yyyyMMdd"));
            _rf.AddConditonItem(_cItem_endDate);


            _rf.AddExpression("1*2*3");

            //加结果
            _rf.AddResultTable(_qv.MainTable);
            foreach (MDModel_Table_Column _tc in _qv.MainTable.Columns)
            {
                _rf.AddResultTableColumn(_qv.MainTable, _tc);
            }
            foreach (string _cTName in _qv.ChildTableDict.Keys)
            {
                MDModel_Table _ctable = _qv.ChildTableDict[_cTName];
                _rf.AddResultTable(_ctable);
                foreach (MDModel_Table_Column _ccol in _ctable.Columns)
                {
                    _rf.AddResultTableColumn(_ctable, _ccol);
                }
            }
            return(_rf.GetQueryRequest());
        }
Beispiel #26
0
        private static string BuildNumberFieldCondition_Table(MDQuery_ConditionItem _cItem, MDModel_QueryModel _qv, string _fieldStr)
        {
            MDModel_Table _table;


            string _tname = _cItem.Column.TableName;

            if (_qv.MainTable.TableName == _tname)
            {
                _table = _qv.MainTable;
            }
            else
            {
                _table = (from _c in _qv.ChildTables
                          where _c.TableName == _tname
                          select _c).First();
            }

            MDModel_Table_Column _tc = (from _cd in _table.Columns
                                        where _cd.ColumnName == _cItem.Column.ColumnName
                                        select _cd).First();

            if (_tc.ColumnRefDMB != "")
            {
                #region 代码表型
                switch (_cItem.Operator)
                {
                case "等于":
                    return(string.Format("{0} = '{1}'", _fieldStr, _cItem.Values[0]));

                case "不等于":
                    return(string.Format("{0} <> '{1}'", _fieldStr, _cItem.Values[0]));

                case "属于":
                    string[] _rtNames = _tc.ColumnRefDMB.Split('.');
                    string   _tName   = (_rtNames.Length > 1) ? _rtNames[1] : _rtNames[0];
                    return(string.Format("{0} in (select dm from jsods.{2} start with dm='{1}' connect by prior DM=FATHERCODE) ", _fieldStr, _cItem.Values[0], _tName));

                case "集合":
                    #region 处理集合
                    string _collectionStr = string.Format(" {0} in (", _fieldStr);
                    string _fg            = "";
                    foreach (string _dateStr in _cItem.Values)
                    {
                        _collectionStr += string.Format("{0}'{1}'", _fg, _dateStr);
                        _fg             = ",";
                    }
                    _collectionStr += ") ";
                    return(_collectionStr);

                    #endregion

                case "为空值":
                    return(string.Format("{0} is null ", _fieldStr));

                case "为非空值":
                    return(string.Format("{0} is not null ", _fieldStr));
                }
                return("");

                #endregion
            }
            else
            {
                #region 普通数值型
                switch (_cItem.Operator)
                {
                case "等于":
                    return(string.Format("{0} = {1} ", _fieldStr, _cItem.Values[0]));

                case "不等于":
                    return(string.Format("{0} <> {1} ", _fieldStr, _cItem.Values[0]));

                case "大于":
                    return(string.Format("{0} > {1} ", _fieldStr, _cItem.Values[0]));

                case "大于等于":
                    return(string.Format("{0} >= {1} ", _fieldStr, _cItem.Values[0]));

                case "小于":
                    return(string.Format("{0} < {1} ", _fieldStr, _cItem.Values[0]));

                case "小于等于":
                    return(string.Format("{0} <= {1} ", _fieldStr, _cItem.Values[0]));


                case "集合":
                    #region 处理集合
                    string _collectionStr = string.Format(" {0} in (", _fieldStr);
                    string _fg            = "";
                    foreach (string _dateStr in _cItem.Values)
                    {
                        _collectionStr += string.Format("{0}{1}", _fg, _dateStr);
                        _fg             = ",";
                    }
                    _collectionStr += ") ";
                    return(_collectionStr);

                    #endregion

                case "范围":
                    return(string.Format("{0} between {1} and {2} ", _fieldStr, _cItem.Values[0], _cItem.Values[1]));

                case "为空值":
                    return(string.Format(" {0} is null ", _fieldStr));

                case "为非空值":
                    return(string.Format(" {0} is not null ", _fieldStr));
                }


                #endregion
            }
            return("");
        }
Beispiel #27
0
        private static string BuildNumberFieldCondition_Method(MDQuery_ConditionItem _cItem, MDModel_QueryModel _qv, string _fieldStr)
        {
            MDModel_Table _table;
            string        _tname = _cItem.Column.TableName;

            if (_qv.MainTable.TableName == _tname)
            {
                _table = _qv.MainTable;
            }
            else
            {
                _table = (from _c in _qv.ChildTables
                          where _c.TableName == _tname
                          select _c).First();
            }



            #region 普通数值型
            switch (_cItem.Operator)
            {
            case "等于":
                return(string.Format("{0} = {1} ", _fieldStr, _cItem.Values[0]));

            case "不等于":
                return(string.Format("{0} <> {1} ", _fieldStr, _cItem.Values[0]));

            case "大于":
                return(string.Format("{0} > {1} ", _fieldStr, _cItem.Values[0]));

            case "大于等于":
                return(string.Format("{0} >= {1} ", _fieldStr, _cItem.Values[0]));

            case "小于":
                return(string.Format("{0} < {1} ", _fieldStr, _cItem.Values[0]));

            case "小于等于":
                return(string.Format("{0} <= {1} ", _fieldStr, _cItem.Values[0]));


            case "集合":
                #region 处理集合
                string _collectionStr = string.Format(" {0} in (", _fieldStr);
                string _fg            = "";
                foreach (string _dateStr in _cItem.Values)
                {
                    _collectionStr += string.Format("{0}{1}", _fg, _dateStr);
                    _fg             = ",";
                }
                _collectionStr += ") ";
                return(_collectionStr);

                #endregion

            case "范围":
                return(string.Format("{0} between {1} and {2} ", _fieldStr, _cItem.Values[0], _cItem.Values[1]));

            case "为空值":
                return(string.Format(" {0} is null ", _fieldStr));

            case "为非空值":
                return(string.Format(" {0} is not null ", _fieldStr));
            }
            return("");

            #endregion
        }
Beispiel #28
0
        private static string BuildCharFieldCondition_Table(MDQuery_ConditionItem _cItem, MDModel_QueryModel _qv, string _fieldStr)
        {
            MDModel_Table _table;
            string        _tname = _cItem.Column.TableName;

            if (_qv.MainTable.TableName == _tname)
            {
                _table = _qv.MainTable;
            }
            else
            {
                _table = (from _c in _qv.ChildTables
                          where _c.TableName == _tname
                          select _c).First();
            }

            MDModel_Table_Column _tc = (from _cd in _table.Columns
                                        where _cd.ColumnName == _cItem.Column.ColumnName
                                        select _cd).First();

            if (_tc.ColumnRefDMB != "")
            {
                //代码表型
                switch (_cItem.Operator)
                {
                case "等于":
                    return(string.Format("{0} = '{1}'", _fieldStr, _cItem.Values[0]));

                case "不等于":
                    return(string.Format("{0} <> '{1}'", _fieldStr, _cItem.Values[0]));

                case "属于":
                    string[] _rtNames = _tc.ColumnRefDMB.Split('.');
                    string   _tName   = (_rtNames.Length > 1) ? _rtNames[1] : _rtNames[0];
                    return(string.Format("{0} in (select dm from jsods.{2} start with dm='{1}' connect by prior DM=FATHERCODE) ", _fieldStr, _cItem.Values[0], _tName));

                case "集合":
                    #region 处理集合
                    string _collectionStr = string.Format(" {0} in (", _fieldStr);
                    string _fg            = "";
                    foreach (string _dateStr in _cItem.Values)
                    {
                        _collectionStr += string.Format("{0}'{1}'", _fg, _dateStr);
                        _fg             = ",";
                    }
                    _collectionStr += ") ";
                    return(_collectionStr);

                    #endregion


                case "为空值":
                    return(string.Format("{0} is null ", _fieldStr));

                case "为非空值":
                    return(string.Format("{0} is not null ", _fieldStr));
                }
                return("");
            }
            else
            {
                //普通字符型
                switch (_cItem.Operator)
                {
                case "等于":
                    if (_cItem.CaseSensitive)
                    {
                        return(string.Format("{0} ='{1}' ", _fieldStr, _cItem.Values[0]));
                    }
                    else
                    {
                        return(string.Format("upper({0}) ='{1}' ", _fieldStr, _cItem.Values[0].ToUpper()));
                    }

                case "不等于":
                    if (_cItem.CaseSensitive)
                    {
                        return(string.Format("{0} <> '{1}' ", _fieldStr, _cItem.Values[0]));
                    }
                    else
                    {
                        return(string.Format("upper({0}) <> '{1}' ", _fieldStr, _cItem.Values[0].ToUpper()));
                    }

                case "包含":
                    if (_cItem.CaseSensitive)
                    {
                        return(string.Format("{0} like '%{1}%' ", _fieldStr, _cItem.Values[0]));
                    }
                    else
                    {
                        return(string.Format("upper({0}) like '%{1}%' ", _fieldStr, _cItem.Values[0].ToUpper()));
                    }

                case "匹配":
                    if (_cItem.CaseSensitive)
                    {
                        return(string.Format("{0} like '{1}' ", _fieldStr, _cItem.Values[0]));
                    }
                    else
                    {
                        return(string.Format("upper({0}) like '{1}' ", _fieldStr, _cItem.Values[0].ToUpper()));
                    }

                case "集合":
                    #region 处理集合
                    string _collectionStr = (_cItem.CaseSensitive) ? string.Format(" {0} in (", _fieldStr)
                            : string.Format(" upper({0}) in (", _fieldStr);
                    string _fg = "";
                    foreach (string _dateStr in _cItem.Values)
                    {
                        if (_cItem.CaseSensitive)
                        {
                            _collectionStr += string.Format("{0}'{1}'", _fg, _dateStr);
                        }
                        else
                        {
                            _collectionStr += string.Format("{0}'{1}'", _fg, _dateStr.ToUpper());
                        }
                        _fg = ",";
                    }
                    _collectionStr += ") ";
                    return(_collectionStr);

                    #endregion

                case "为空值":
                    return(string.Format(" {0} is null ", _fieldStr));

                case "为非空值":
                    return(string.Format(" {0} is not null ", _fieldStr));
                }
                return("");
            }
        }
        /// <summary>
        /// 构建日期型字段条件的表达式
        /// </summary>
        /// <param name="_cItem"></param>
        /// <returns></returns>
        private static string BuildDateFieldConditon(MDQuery_ConditionItem _cItem)
        {
            string _fieldStr = string.Format("{0}.{1} ", _cItem.Column.TableName, _cItem.Column.ColumnName);
            string _year     = _cItem.Values[0].Substring(0, 4);
            string _month    = _cItem.Values[0].Substring(4, 2);
            string _day      = _cItem.Values[0].Substring(6, 2);
            string DateFirst = string.Format(" '{0}-{1}-{2}' ", _year, _month, _day);
            string DateEnd   = string.Format(" '{0}-{1}-{2} 23:59:59' ", _year, _month, _day);

            switch (_cItem.Operator)
            {
            case "等于":
                return(string.Format("{0} >={1} and {0}<={2} ", _fieldStr, DateFirst, DateEnd));

            case "时间段":
                #region 处理时间段
                string enddate = string.Format(" '{0} 23:59:59'", _cItem.Values[1]);
                return(string.Format("{0} >={1} and {0}<={2} ", _fieldStr, DateFirst, enddate));

                #endregion

            case "集合":
                #region 处理时间集合
                string _collectionStr = string.Format("  (", _fieldStr);
                string _fg            = "";
                foreach (string _dateStr in _cItem.Values)
                {
                    string _sDate = string.Format(" '{0}' ", _dateStr);
                    string _eDate = string.Format(" '{0} 23:59:59' ", _dateStr);
                    _collectionStr += string.Format(" {3} ({0} >={1} and {0} <={2}) ", _fieldStr, _sDate, _eDate, _fg);
                    _fg             = " or ";
                }
                _collectionStr += ") ";
                return(_collectionStr);

                #endregion

            case "不等于":
                return(string.Format("{0} <{1} or {0} >{2} ", _fieldStr, DateFirst, DateEnd));

            case "大于":
                return(string.Format("{0} > {1} ", _fieldStr, DateEnd));

            case "大于等于":
                return(string.Format("{0} > {1} ", _fieldStr, DateFirst));

            case "小于":
                return(string.Format("{0} < {1} ", _fieldStr, DateFirst));

            case "小于等于":
                return(string.Format("{0} < {1} ", _fieldStr, DateEnd));

                break;

            case "为空值":
                return(string.Format(" {0} is null ", _fieldStr));

            case "为非空值":
                return(string.Format(" {0} is not null ", _fieldStr));
            }
            return("");
        }
        /// <summary>
        /// 构建字符型字段表达式
        /// </summary>
        /// <param name="_cItem"></param>
        /// <returns></returns>
        private static string BuildCharFieldCondition(MDQuery_ConditionItem _cItem, MDModel_QueryModel _qv)
        {
            MDModel_Table _table;
            string        _fieldStr = string.Format("{0}.{1} ", _cItem.Column.TableName, _cItem.Column.ColumnName);

            string _tname = _cItem.Column.TableName;

            if (_qv.MainTable.TableName == _tname)
            {
                _table = _qv.MainTable;
            }
            else
            {
                _table = _qv.ChildTableDict[_tname];
            }

            var _find = from _c in _table.Columns
                        where _c.ColumnName == _cItem.Column.ColumnName
                        select _c;
            MDModel_Table_Column _tc = _find.First();

            if (_tc.ColumnRefDMB != "")
            {
                //代码表型
                switch (_cItem.Operator)
                {
                case "等于":
                    return(string.Format("{0} = '{1}'", _fieldStr, _cItem.Values[0]));

                    break;

                case "不等于":
                    return(string.Format("{0} <> '{1}'", _fieldStr, _cItem.Values[0]));

                    break;

                case "属于":
                    throw new Exception("代码表型的属于操作未实现!");
                    break;

                case "集合":
                    #region 处理集合
                    string _collectionStr = " (";
                    string _fg            = "";
                    foreach (string _dateStr in _cItem.Values)
                    {
                        _collectionStr += string.Format(" {2} {0}='{1}' ", _fieldStr, _dateStr, _fg);
                        _fg             = " or ";
                    }
                    _collectionStr += ") ";
                    return(_collectionStr);

                    #endregion
                    break;

                case "为空值":
                    return(string.Format("{0} is null ", _fieldStr));

                    break;

                case "为非空值":
                    return(string.Format("{0} is not null ", _fieldStr));

                    break;
                }
                return("");
            }
            else
            {
                //普通字符型

                switch (_cItem.Operator)
                {
                case "等于":
                    return(string.Format("{0} ='{1}' ", _fieldStr, _cItem.Values[0]));

                case "不等于":
                    return(string.Format("{0} <>'{1}' ", _fieldStr, _cItem.Values[0]));


                case "包含":
                    return(string.Format("{0} like '%{1}%' ", _fieldStr, _cItem.Values[0]));

                case "匹配":
                    return(string.Format("{0} like '{1}' ", _fieldStr, _cItem.Values[0]));

                case "集合":
                    #region 处理集合
                    string _collectionStr = " (";
                    string _fg            = "";
                    foreach (string _dateStr in _cItem.Values)
                    {
                        _collectionStr += string.Format(" {2} {0}='{1}' ", _fieldStr, _dateStr, _fg);
                        _fg             = " or ";
                    }
                    _collectionStr += ") ";
                    return(_collectionStr);

                    #endregion

                case "为空值":
                    return(string.Format(" {0} is null ", _fieldStr));

                case "为非空值":
                    return(string.Format(" {0} is not null ", _fieldStr));
                }
                return("");
            }
        }