コード例 #1
0
ファイル: VisualJoin.cs プロジェクト: crstnsz/VisualQuery
        private void SetJoin(Join join)
        {
            _join = join;
            switch (Join.Operation)
            {
            case Operation.Equal:
                labelsWithJoinOperation_Click(labelIqual, new EventArgs());
                break;

            case Operation.Less:
                labelsWithJoinOperation_Click(labelLess, new EventArgs());
                break;

            case Operation.LessEqual:
                labelsWithJoinOperation_Click(labelLessIqual, new EventArgs());
                break;

            case Operation.Greater:
                labelsWithJoinOperation_Click(labelGreat, new EventArgs());
                break;

            case Operation.GreaterEqual:
                labelsWithJoinOperation_Click(labelGreatIqual, new EventArgs());
                break;

            case Operation.Diferente:
                labelsWithJoinOperation_Click(labelDiferente, new EventArgs());
                break;

            case Operation.LeftOuterJoin:
                labelsWithJoinOperation_Click(labelOuterJoin, new EventArgs());
                break;

            default:
                throw new Error.Excessao(197);
            }
        }
コード例 #2
0
ファイル: QueryDesigner.cs プロジェクト: crstnsz/VisualQuery
        /// <summary>
        /// Carrega visual a Sintaxe SQL
        /// </summary>
        /// <param name="syntax"></param>
        public void LoadSyntax(string syntax)
        {
            // Sintaxes identicas não procisa fazer nada
            if (syntax == this.richTextBoxSQL.Text)
            {
                return;
            }
            if (syntax.EndsWith(";"))
            {
                syntax = syntax.Remove(syntax.Length - 1);
            }

            Database.SelectAnalyzer _sql = new Database.SelectAnalyzer(syntax);

            foreach (Database.SelectAnalyzer.Consulta consulta in _sql.Consultas)
            {
                if (consulta.Tipo == Database.SelectAnalyzer.TipoConsulta.Uniao)
                {
                    throw new Error.Excessao(197);
                }
            }

            if (_sql.Consultas.Length == 0)
            {
                this.Clear();
                if (syntax.Trim() == string.Empty)
                {
                    return;
                }
                else
                {
                    throw new Error.Excessao(197);
                }
            }
            Database.SelectAnalyzer.Consulta _consulta = _sql.Consultas[0];

            // Já tem uma sintaxe anterior
            if (this.richTextBoxSQL.Text != string.Empty)
            {
                this.Clear();
            }
            if (syntax == string.Empty)
            {
                return;
            }

            Point p = new Point(10, 10);

            foreach (Database.SelectAnalyzer.Consulta.AnalyzerTabelaOrigem _tableQuery in _consulta.Tabelas)
            {
                bool findTable = false;
                foreach (Table _table in _database.Tables)
                {
                    if (Database.SelectAnalyzer.Consulta.AnalyzerTabelaOrigem.CompararNomeTabela(_tableQuery.Banco, _table.Name))
                    {
                        Table _newTable = (Table)_table.Clone();
                        _newTable.Alias = _tableQuery.Apelido;
                        this.LoadVisualTable(_newTable, p);
                        p.X      += _visualTables[_newTable.FullName].Width + 10;
                        findTable = true;
                        break;
                    }
                }
                if (!findTable)
                {
                    throw new Error.Excessao(96, _tableQuery.Referencia);
                }
            }

            foreach (Database.SelectAnalyzer.Consulta.AnalyzerCampo _column in _consulta.Campos)
            {
                if (_column.ColunaCompleta == "*")
                {
                    foreach (VisualTable _vt in _visualTables.Values)
                    {
                        _vt.SelectAll();
                    }
                    continue;
                }


                Column _col = _query.FindColumn(_column.NomeBanco);
                if (_col == null)
                {
                    _col = new Column(_column.ColunaCompleta);
                }
                else
                {
                    _col = (Column)_col.Clone();
                    if (_column.Apelido != string.Empty)
                    {
                        _col.Alias = _column.Apelido;
                    }
                    else
                    {
                        _visualTables[_col.Table.FullName].SetSelectedColumn(_col, true);
                    }
                }

                visualFilters.SetShowColumn(_col, true, true);

                _query.Columns.Add(_col);
            }

            foreach (Database.SelectAnalyzer.Consulta.AnalyzerJoin _join in _consulta.Ligacoes)
            {
                Column _left  = null;
                Column _right = null;
                if (_join.Type == Database.SelectAnalyzer.Consulta.AnalyzerJoinType.RightOuterJoin)
                {
                    throw new Error.Excessao(197);
                }
                else
                {
                    _left  = AssignColumn(_join.Left.ColunaCompleta);
                    _right = AssignColumn(_join.Right.ColunaCompleta);
                }
                Join _newJoin = new Join(_left, _right);
                if (_join.Type != Database.SelectAnalyzer.Consulta.AnalyzerJoinType.InnerJoin)
                {
                    _newJoin.Operation = Operation.LeftOuterJoin;
                }
                else
                {
                    _newJoin.Operation = OperationFX.StringToOperation(_join.Operation);
                }
                AddVisualJoin(_newJoin);
            }

            this.InputWhere(_consulta.Filtros);

            foreach (Database.SelectAnalyzer.Consulta.AnalyzerCampo _column in _consulta.Grupo)
            {
                Column _col = AssignColumn(_column.ColunaCompleta);
                visualFilters.SetGroup(_col, true);
            }

            foreach (Database.SelectAnalyzer.Consulta.AnalyzerOrder _order in _consulta.Ordem)
            {
                Order _ord = new Order();
                _ord.DescendingOrder = _order.Descendente;
                _ord.Column          = AssignColumn(_order.Coluna.ColunaCompleta);
                _query.Orders.Add(_ord);
            }

            List <Database.SelectAnalyzer.Consulta.WherePiece> filtros = _consulta.FiltrosGrupo;

            if (filtros != null)
            {
                if (filtros.Count > 0)
                {
                    visualFilters.SetHavingList(filtros);
                }
            }

            this.RenderSQL();
        }
コード例 #3
0
ファイル: JoinEventArgs.cs プロジェクト: crstnsz/VisualQuery
 internal JoinEventArgs(Join join, JoinEventAction action)
 {
     this._action = action;
     _join        = join;
 }
コード例 #4
0
ファイル: JoinEventArgs.cs プロジェクト: crstnsz/VisualQuery
 internal JoinEventArgs(Column left, Column righ, JoinEventAction action)
 {
     this._action = action;
     _join        = new Join(left, righ);
 }