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); } }
/// <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(); }
internal JoinEventArgs(Join join, JoinEventAction action) { this._action = action; _join = join; }
internal JoinEventArgs(Column left, Column righ, JoinEventAction action) { this._action = action; _join = new Join(left, righ); }