Ejemplo n.º 1
0
        public void GetDatatable(Tech.QScript.Syntax.SQuery sQuery)
        {
            DBSelectQuery select  = DBQuery.Select();
            bool          isAdded = false;

            foreach (Syntax.Query.Table t in sQuery.tables)
            {
                foreach (Syntax.Query.TableField tf in t.Fields)
                {
                    if (t.TableAlias != "")
                    {
                        select.Field(t.TableAlias.Trim(), tf.FieldName.Trim()).As(tf.FieldName.Trim());
                    }
                    else
                    {
                        select.Field(t.TableName.Trim(), tf.FieldName.Trim()).As(tf.FieldName.Trim());
                    }
                }
            }
            foreach (Syntax.Query.Table t in sQuery.tables)
            {
                if (t.Relations.Count == 0)
                {
                    if (isAdded == false)
                    {
                        select.From(t.TableName.Trim()).As(t.TableAlias.Trim());
                        isAdded = true;
                    }
                }
                isAdded = false;
                int indx = 0;
                foreach (Syntax.Query.Relation r in t.Relations)
                {
                    if (indx == 0)
                    {
                        select.InnerJoin(t.TableName.Trim()).As(t.TableAlias.Trim()).On(r.lefttable.Trim(), r.LeftField.Trim(), GetCompare(r.Operator), r.RightTable.Trim(), r.RightField.Trim());
                    }
                    else if (t.Relations.Count > 1)
                    {
                        select.And(r.lefttable.Trim(), r.LeftField.Trim(), GetCompare(r.Operator), r.RightTable.Trim(), r.RightField.Trim());
                    }
                    indx = indx + 1;
                }
            }
            //foreach (Syntax.Query.Table t in sQuery.from.Tables )
            //{
            //    select.From(t.TableName ).As(t.TableName );
            //}
            int index = 0;

            foreach (Syntax.Query.Where where in sQuery.Conditions)
            {
                if (where.Type == Syntax.Query.ConditionType.filter)
                {
                    if (where.JoinType == Syntax.Query.JoinType.And)
                    {
                        if (index == 0)
                        {
                            select.WhereField(where.lefttable.Trim(), where.LeftField.Trim(), GetCompare(where.Operator), DBConst.String(getValue(where.Operator, where.Value.Trim())));
                        }
                        else
                        {
                            select.AndWhere(where.lefttable.Trim(), where.LeftField.Trim(), GetCompare(where.Operator), DBConst.String(getValue(where.Operator, where.Value.Trim())));
                        }
                    }
                    else if (where.JoinType == Syntax.Query.JoinType.or)
                    {
                        DBField      lff = DBField.Field(where.lefttable, where.LeftField.Trim());
                        DBField      rff = DBField.Field(where.RightTable, where.RightField.Trim());
                        DBComparison d   = DBComparison.Equal(lff, DBConst.String(where.Value.Trim()));

                        select.OrWhere(d);
                    }
                    else if (where.JoinType == Syntax.Query.JoinType.None)
                    {
                        DBField      lff = DBField.Field(where.lefttable, where.LeftField.Trim());
                        DBField      rff = DBField.Field(where.RightTable, where.RightField.Trim());
                        DBComparison d   = DBComparison.Equal(lff, DBConst.String(where.Value.Trim()));
                        select.OrWhereNone(d);
                    }
                    index = index + 1;
                }
            }
            var data = Database.GetDatatable(select);

            query = select.ToSQLString(Database);
            dataTable
                = (System.Data.DataTable)data;
        }
Ejemplo n.º 2
0
 /// <summary>
 ///
 /// </summary>
 /// <returns></returns>
 public string GetStatement()
 {
     return(select.ToSQLString(Database));
 }
Ejemplo n.º 3
0
        public void GetDatatable(Tech.QScript.Syntax.SQuery sQuery)
        {
            DBSelectQuery select = DBQuery.Select();

            foreach (Syntax.Query.Table t in sQuery.tables)
            {
                foreach (Syntax.Query.TableField tf in t.Fields)
                {
                    select.Field(t.TableName, tf.FieldName).As(tf.FieldName);
                }
                foreach (Syntax.Query.Where where in sQuery.Conditions)
                {
                    if (where.Type == Syntax.Query.ConditionType.relation)
                    {
                        if (where.JoinType == Syntax.Query.JoinType.And)
                        {
                            select.And(where.lefttable, where.LeftField, Data.Compare.Equals, where.RightTable, where.RightField);
                        }
                        else if (where.JoinType == Syntax.Query.JoinType.or)
                        {
                            DBTable lft = DBTable.Table(where.lefttable);
                            DBTable rgt = DBTable.Table(where.RightTable);
                            DBField lff = DBField.Field(where.lefttable, where.LeftField);
                            DBField rff = DBField.Field(where.RightTable, where.RightField);
                            select.OrWhere(lff, Data.Compare.Equals, rff);

                            // DBComparison joined = DBComparison.Compare(DBClause);
                            //select.InnerJoin(where.lefttable).As (where.lefttable)
                            //     .On(where.lefttable,where.LeftField,Data.Compare.Equals,where.RightTable,where.RightField)

                            //select.OrWhere(where.lefttable,where.LeftField,Data.Compare.Equals, )
                            //select.OrWhere (where.lefttable, where.LeftField, Data.Compare.Equals, where.RightTable, where.RightField);
                        }
                        else if (where.JoinType == Syntax.Query.JoinType.None)
                        {
                            DBField      lff = DBField.Field(where.lefttable, where.LeftField);
                            DBField      rff = DBField.Field(where.RightTable, where.RightField);
                            DBComparison d   = DBComparison.Equal(lff, rff);
                            select.WhereNone(d);
                        }
                    }
                    else if (where.Type == Syntax.Query.ConditionType.filter)
                    {
                        if (where.JoinType == Syntax.Query.JoinType.And)
                        {
                            select.WhereField(where.lefttable, where.LeftField, Data.Compare.Equals, DBConst.String(where.Value));
                        }
                        else if (where.JoinType == Syntax.Query.JoinType.or)
                        {
                            DBField      lff = DBField.Field(where.lefttable, where.LeftField);
                            DBField      rff = DBField.Field(where.RightTable, where.RightField);
                            DBComparison d   = DBComparison.Equal(lff, DBConst.String(where.Value));

                            select.OrWhere(d);
                        }
                        else if (where.JoinType == Syntax.Query.JoinType.None)
                        {
                            DBField      lff = DBField.Field(where.lefttable, where.LeftField);
                            DBField      rff = DBField.Field(where.RightTable, where.RightField);
                            DBComparison d   = DBComparison.Equal(lff, DBConst.String(where.Value));
                            select.OrWhereNone(d);
                        }
                    }
                }
            }
            var data = Database.GetDatatable(select);

            query = select.ToSQLString(Database);
            dataTable
                = (System.Data.DataTable)data;
        }