Beispiel #1
0
 internal QColumnValueCondition(QColumn column1, string op, object value)
 {
     leftColumn = column1;
     this.op    = op;
     this.value = value;
     //if ("=|==|<>|!=|>|<|>=|<=".Contains(op)) {
     //    if (value is Int16 || value is Int32 || value is Int64
     //        || value is UInt16 || value is UInt32 || value is UInt64
     //        || value is Single || value is Double || value is Decimal
     //        ) {
     //        this.value = value.ToString();
     //    }
     //    if (value is Int16? || value is Int32? || value is Int64?
     //        || value is UInt16? || value is UInt32? || value is UInt64?
     //        || value is Single? || value is Double? || value is Decimal?
     //        ) {
     //        if (object.Equals(null, value) == false) {
     //            this.value = value.ToString();
     //        }
     //    }
     //    if (value is bool) {
     //        this.value = (bool)value ? "1" : "0";
     //    }
     //    if (value is bool?) {
     //        if (object.Equals(null, value) == false) {
     //            this.value = ((bool?)value).Value ? "1" : "0";
     //        }
     //    }
     //}
     isSetValaue = true;
 }
 public FormCriteriaAnd(FormColumnSelection frm, QColumn col)
     : this()
 {
     this.frm    = frm;
     this.column = col;
     onLoadForm();
 }
        public void OrderBy(QColumn column, OrderType orderType = OrderType.Asc)
        {
            if (_jump)
            {
                _jump = false; return;
            }

            _orderBys.Add(new OrderItem(column, orderType));
        }
        public void GroupBy(QColumn column, params QColumn[] columns)
        {
            if (_jump)
            {
                _jump = false; return;
            }

            _groupBy.Add(column);
            foreach (var item in columns)
            {
                _groupBy.Add(item);
            }
        }
Beispiel #5
0
        /// <summary>
        /// 是否存有组(@列=值)
        /// </summary>
        /// <param name="col">列</param>
        /// <param name="val">值</param>
        /// <returns></returns>
        public bool Exists(QColumn col, int val)
        {
            GroupM g = new GroupM();

            g.Where(col == val);

            if (DEFINE_VALUE > 0)
            {
                g.And(g.R_PGID == DEFINE_VALUE);
            }

            return(g.NoLock().Exists());
        }
Beispiel #6
0
        public void GroupBy(string groupBy)
        {
            if (_jump)
            {
                _jump = false; return;
            }
            var column = new QColumn()
            {
                _columnType = Enums.ColumnType.Code,
                _code       = groupBy
            };

            _groupBy.Add(column);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="tables"></param>
 /// <param name="pk"></param>
 /// <param name="tableName"></param>
 /// <param name="fromtable"></param>
 /// <param name="jointables"></param>
 /// <param name="where"></param>
 /// <returns></returns>
 public override string Delete(List <QTable> tables, QColumn pk, string tableName, string fromtable, string jointables, string where)
 {
     return("DELETE t1 FROM " + fromtable
            + " " + jointables
            + " WHERE " + where);
 }
Beispiel #8
0
 public CustomChildNode(QColumn column)
     : base(column.Name)
 {
     this.column = column;
 }
Beispiel #9
0
        /// <summary>
        /// 执行SQL 查询,返回个数
        /// </summary>
        /// <param name="distinctColumn"></param>
        /// <returns></returns>
        public int SelectCount(QColumn distinctColumn)
        {
            var column = (distinctColumn).ToSql(Provider, _tables.Count);

            return(getCount(column));
        }
Beispiel #10
0
        private void SelectInternal(Expression <Func <TDescriptor, object> > selector)
        {
            var propertyPath    = selector.Body.ToString();
            var indexOfFirstDot = propertyPath.IndexOf('.');

            if (indexOfFirstDot > -1)
            {
                propertyPath = propertyPath.Substring(indexOfFirstDot + 1);
            }

            var properties = propertyPath.Split('.');


            var currentEntity     = _entity;
            var tableIndex        = 0;
            var currentTableAlias = GetTableAlias(tableIndex);

            IList <QColumn> columns = new List <QColumn>();

            var tableAliasDictionary = new Dictionary <string, string>
            {
                [currentEntity.StorageName] = currentTableAlias
            };

            foreach (var property in properties)
            {
                if (!currentEntity.TryGetMember(property, out MetadataBase member))
                {
                    throw new EafException($"Cannot find member {property}");
                }

                if (member is AttributeMetadata)
                {
                    var attribute = (AttributeMetadata)member;
                    var column    = new QColumn
                    {
                        Properties = properties,
                        Path       = propertyPath,
                        Alias      = propertyPath.Replace('.', '_')
                    };

                    columns.Add(column);
                    _query.Select(GetColumnName(currentTableAlias, member.Name, column.Alias));
                }
                else
                {
                    var relatedTableAlias = GetTableAlias(++tableIndex);
                    var relation          = (RelationMetadata)member;
                    currentEntity = relation.Entity;
                    _query.CombineRaw($"LEFT JOIN {relation.Entity.StorageName} {relatedTableAlias} ON {currentTableAlias}.{relation.Attributes[0].Attribute.StorageName} = {relatedTableAlias}.{relation.Attributes[0].LinkedAttribute.StorageName}");

                    currentTableAlias = relatedTableAlias;
                }
            }


            var compiledQuery = new SqlKata.Compilers.SqlServerCompiler().Compile(_query);


            var accessor = TypeAccessor.Create(_entity.Type);


            using (var connection = _connection)
            {
                if (connection.State != ConnectionState.Open)
                {
                    connection.Open();
                }

                using (var command = connection.CreateCommand())
                {
                    command.CommandText = compiledQuery.RawSql;
                    using (var reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            //var entity =

                            //var cellDictionary = new Dictionary<string, object>();
                            var entity = Activator.CreateInstance <TEntity>();
                            foreach (var column in columns)
                            {
                                if (column.Properties.Count > 0)
                                {
                                    foreach (var property in column.Properties)
                                    {
                                    }
                                }

                                //cellDictionary.Add(column.Alias, reader[column.Alias]);
                            }
                        }
                    }
                }
            }
        }
Beispiel #11
0
        //============= Get list of available columns of a table returned by a user defined function ===================//
        public List <QColumn> GetColumnsFromTableFunction(string table)
        {
            List <QColumn> columns = new List <QColumn>();

            try
            {
                SqlCommand cmdSelect = new SqlCommand();
                using (cmdSelect)
                {
                    cmdSelect.CommandText = "SELECT name, xtype from sys.syscolumns " +
                                            "where id in (select id from sysobjects where " +
                                            "name = '" + table + "')" +
                                            "and number != 1";
                    cmdSelect.CommandType    = CommandType.Text;
                    cmdSelect.Connection     = sqlConnection;
                    cmdSelect.CommandTimeout = 180;
                }
                daColumnFunction.SelectCommand = cmdSelect;
                DataSet dsColumn = new DataSet();
                daColumnFunction.Fill(dsColumn, "Columns");
                DataTableReader dtReader = dsColumn.CreateDataReader();
                while (dtReader.Read())
                {
                    string colname  = dtReader.GetValue(0).ToString();
                    string xtype    = dtReader.GetValue(1).ToString();
                    string datatype = "";
                    if (xtype == "48" ||
                        xtype == "52" ||
                        xtype == "56" ||
                        xtype == "59" ||
                        xtype == "60" ||
                        xtype == "62" ||
                        xtype == "104" ||
                        xtype == "106" ||
                        xtype == "108" ||
                        xtype == "122" ||
                        xtype == "127" ||
                        xtype == "173" ||
                        xtype == "56"
                        )
                    {
                        datatype = "decimal";
                    }
                    else
                    {
                        datatype = "varchar";
                    }
                    QColumn column = new QColumn(colname, datatype);
                    columns.Add(column);
                }
            }
            catch (SqlException se)
            {
                Debug.WriteLine(se.ToString());
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.ToString());
            }

            //UNCOMMENT THE CODE BELOW FOR USING CONNECTED LAYER
            //using (this.SqlConnection)
            //{
            //    Connect();
            //    using (SqlCommand cmd = new SqlCommand("SELECT name, xtype from sys.syscolumns " +
            //                                        "where id in (select id from sysobjects where " +
            //                                        "name = '" + table + "')" +
            //                                        "and number != 1", this.SqlConnection))
            //    {
            //        using (IDataReader dr = cmd.ExecuteReader())
            //        {
            //            while (dr.Read())
            //            {
            //                string colname = dr.GetValue(0).ToString();
            //                string xtype = dr.GetValue(1).ToString();
            //                string datatype = "";
            //                if (xtype == "48"
            //                        || xtype == "52"
            //                        || xtype == "56"
            //                        || xtype == "59"
            //                        || xtype == "60"
            //                        || xtype == "62"
            //                        || xtype == "104"
            //                        || xtype == "106"
            //                        || xtype == "108"
            //                        || xtype == "122"
            //                        || xtype == "127"
            //                        || xtype == "173"
            //                        || xtype == "56"
            //                        )
            //                {
            //                    datatype = "decimal";
            //                }
            //                else
            //                {
            //                    datatype = "varchar";
            //                }
            //                QColumn column = new QColumn(colname, datatype);
            //                columns.Add(column);
            //            }
            //        }
            //    }
            //}
            //this.Close();

            return(columns);
        }
Beispiel #12
0
 //internal new QColumnBase leftColumn;
 //internal new QColumnBase rightColumn;
 internal QJoinCondition(QColumn column1, string op, QColumn column2)
     : base(column1, op, column2)
 {
     //leftColumn = column1;
     //rightColumn = column2;
 }
Beispiel #13
0
 internal QColumnColumnCondition(QColumn column1, string op, QColumn column2)
 {
     leftColumn  = column1;
     Op          = op;
     rightColumn = column2;
 }
Beispiel #14
0
 internal QColumnValueCondition(QColumn column1, string op)
 {
     leftColumn = column1;
     this.op    = op;
 }
Beispiel #15
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="tables"></param>
 /// <param name="pk"></param>
 /// <param name="tableName"></param>
 /// <param name="fromtable"></param>
 /// <param name="jointables"></param>
 /// <param name="where"></param>
 /// <returns></returns>
 public override string Delete(List <QTable> tables, QColumn pk, string tableName, string fromtable, string jointables, string where)
 {
     //http://bbs.csdn.net/topics/340167958
     return($"DELETE distinctrow t1.* FROM {fromtable} {jointables} WHERE {where};");
 }
Beispiel #16
0
        public Task <int> SelectCountAsync(QColumn distinctColumn)
        {
            var column = (distinctColumn).ToSql(Provider, _tables.Count);

            return(getCountAsync(column));
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="tables"></param>
 /// <param name="pk"></param>
 /// <param name="tableName"></param>
 /// <param name="fromtable"></param>
 /// <param name="jointables"></param>
 /// <param name="where"></param>
 /// <returns></returns>
 public override string Delete(List <QTable> tables, QColumn pk, string tableName, string fromtable, string jointables, string where)
 {
     return($"DELETE t1 FROM {fromtable} {jointables} WHERE {where};");
 }
Beispiel #18
0
 public OrderItem(QColumn column, OrderType orderType)
 {
     this.column    = column;
     this.orderType = orderType;
 }