Ejemplo n.º 1
0
        public void AddColumn(Keyword k, DbColumn c, bool includeAlias)
        {
            int    insertPos = -1;
            string sql       = "";

            if (insertPos == -1)
            {
                if (k.tokenType != TokenType.Select && k.startOffset == 0)
                {
                    sql = " " + k.shortName.ToLower();
                    if (k.tokenType == TokenType.Group || k.tokenType == TokenType.Order)
                    {
                        sql += " by";
                    }
                    sql      += " ";
                    insertPos = k.GetInsertOffset();
                }
                else
                {
                    insertPos = k.rightExtent;
                }
            }

            string alias = AddTable(c.table, includeAlias);

            sql += T.AppendTo(alias, c.name, ".");
            if (k.tokenType == TokenType.Where)
            {
                sql = sql + "=" + QObject.GetZeroSqlValueForType(c.dataType);
                if (k.columns.Count > 0)
                {
                    sql = " and " + sql;
                }
            }
            else
            {
                if (k.columns.Count > 0)
                {
                    sql = ", " + sql;
                    // insertPos--;
                }
            }
            while (Char.IsWhiteSpace(Query.rootQuery.expression[insertPos - 1]))
            {
                insertPos--;
            }
            inserts.Add(insertPos, sql);
        }