private void btnAddFiltro_Click(object sender, EventArgs e)
        {
            DataRow row = dtFiltro.NewRow();

            Dicionario.Campos campo_avulso;

            if (dtFiltro.Rows.Count > 0)
            {
                if (cmbConjuncao.Text == "")
                {
                    MessageBox.Show("É obrigatório selecionar a conjunção!");
                    return;
                }
            }

            row["ID"] = dtFiltro.Rows.Count + 1;

            var campos = Geral.banco.LerNoBanco <Dicionario.Campos>("Select * from Campos where Tabela = '" + cmbTabelaPlataforma.SelectedValue.ToString() + "'");

            if (campos.Where(x => x.Campo == cmbCamposTabela.Text).Count() == 0)
            {
                DialogResult dr = MessageBox.Show("Deseja filtrar utilizando um campo avulso " + cmbCamposTabela.Text + "? (É necessário que o campo exista na query)", "Pergunta", MessageBoxButtons.YesNo);

                if (dr == DialogResult.No)
                {
                    return;
                }

                campo_avulso          = new Dicionario.Campos();
                campo_avulso.Campo    = cmbCamposTabela.Text;
                campo_avulso.CampoERP = cmbCamposTabela.Text;
                campo_avulso.Tabela   = cmbTabelaPlataforma.SelectedValue.ToString();

                list_campos_avulso.Add(campo_avulso);

                row["CAMPO"] = cmbCamposTabela.Text;
            }
            else
            {
                row["CAMPO"] = cmbCamposTabela.SelectedValue.ToString();
            }

            row["CONDICAO"]   = cmbCondicao.Text.ToString();
            row["COMPARACAO"] = txtComparacao.Text;

            if (dtFiltro.Rows.Count > 0)
            {
                row["CONJUNCAO"] = cmbConjuncao.Text;
            }

            dtFiltro.Rows.Add(row);

            gridFiltros.DataSource = dtFiltro;
        }
        private void CarregarCamposTabela()
        {
            if (cmbTabelaPlataforma.SelectedValue != null)
            {
                cmbCamposTabela.ValueMember   = "Campo";
                cmbCamposTabela.DisplayMember = "Campo";
                var campos = Geral.banco.LerNoBanco <Dicionario.Campos>("Select * from Campos where Tabela = '" + cmbTabelaPlataforma.SelectedValue.ToString() + "'");

                Dicionario.Campos campo_rownum = new Dicionario.Campos();
                campo_rownum.Campo    = "ROWNUM";
                campo_rownum.CampoERP = "ROWNUM";
                campo_rownum.Tabela   = cmbTabelaPlataforma.SelectedValue.ToString();

                campos.Add(campo_rownum);

                cmbCamposTabela.DataSource = campos;
            }
        }
        private void btnDoFilter_Click(object sender, EventArgs e)
        {
            var tabela = Geral.banco.LerNoBanco <Dicionario.Tabelas>("Select * from Tabelas where Nome = '" + cmbTabelaPlataforma.SelectedValue.ToString() + "'").FirstOrDefault();

            if (tabela == null)
            {
                MessageBox.Show("Configuração para a tabela " + cmbTabelaPlataforma.SelectedValue.ToString() + " não encontrada!");
                return;
            }

            var campos = Geral.banco.LerNoBanco <Dicionario.Campos>("Select * from Campos where Tabela = '" + cmbTabelaPlataforma.SelectedValue.ToString() + "'");

            Dicionario.Campos campo_rownum = new Dicionario.Campos();
            campo_rownum.Campo    = "ROWNUM";
            campo_rownum.CampoERP = "ROWNUM";
            campo_rownum.Tabela   = cmbTabelaPlataforma.SelectedValue.ToString();

            campos.Add(campo_rownum);


            if (list_campos_avulso != null)
            {
                foreach (var campo_avulso in list_campos_avulso)
                {
                    campos.Add(campo_avulso);
                }
            }

            string query = "";

            query = tabela.Query;

            foreach (DataRow row in dtFiltro.Rows)
            {
                var campo = campos.Where(x => x.Campo == row["CAMPO"].ToString()).FirstOrDefault();

                if (campo != null)
                {
                    if (row["ID"].ToString() == "1")
                    {
                        query = query + " AND ";
                    }

                    query += row["CONJUNCAO"] + " " + campo.CampoERP + " " + row["CONDICAO"] + " " + (campo.Tipo == "String" ? "'" : "") + row["COMPARACAO"] + (campo.Tipo == "String" ? "'" : "");
                }
            }

            try
            {
                this.Cursor = Cursors.WaitCursor;
                gridResultado.DataSource = Geral.agilee.ExecutarQuery(query.Replace("\"", "'"));
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                MessageBox.Show(ex.Message);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }