예제 #1
0
        public static TList_Cad_ParamClasse BuscaParamClasseSQLString(string SQL)
        {
            TList_Cad_ParamClasse lParamRetorno = new TList_Cad_ParamClasse();
            const char            chaveInicio   = '{';
            const char            chaveFim      = '}';

            char[]   delimitadores  = new char[] { chaveInicio, chaveFim };
            String[] resultadoArray = SQL.Split(delimitadores);


            for (int i = 0; i < resultadoArray.Length; i++)
            {
                if (resultadoArray[i].IndexOf("@") == 0)
                {
                    TList_Cad_ParamClasse listaParam = TCN_Cad_ParamClasse.Buscar(0, "", "{" + resultadoArray[i] + "}", "", 0, null);

                    for (int x = 0; x < listaParam.Count; x++)
                    {
                        if (!lParamRetorno.Exists(p => p.NM_CampoFormat == (listaParam[x] as TRegistro_Cad_ParamClasse).NM_CampoFormat))
                        {
                            //ADD A LISTA DE RETORNO DOS PARAMETROS
                            lParamRetorno.Add(listaParam[x] as TRegistro_Cad_ParamClasse);
                        }
                    }
                }
            }

            return(lParamRetorno);
        }
예제 #2
0
        public static TList_Cad_Report Buscar(decimal vID_Report,
                                              string vDS_Report,
                                              string vModulo,
                                              string vNM_Classe,
                                              string vIdent,
                                              decimal vVersao,
                                              string vId_rdc,
                                              bool vNaoBuscarRelClasse,
                                              bool vBuscarHomologacao,
                                              bool vBuscarDTSParam)
        {
            TpBusca[] filtro = new TpBusca[0];

            if (vID_Report > 0)
            {
                Array.Resize(ref filtro, filtro.Length + 1);
                filtro[filtro.Length - 1].vNM_Campo = "a.ID_Report";
                filtro[filtro.Length - 1].vVL_Busca = vID_Report.ToString();
                filtro[filtro.Length - 1].vOperador = "=";
            }
            if (!string.IsNullOrEmpty(vDS_Report))
            {
                Array.Resize(ref filtro, filtro.Length + 1);
                filtro[filtro.Length - 1].vNM_Campo = "a.DS_Report";
                filtro[filtro.Length - 1].vVL_Busca = "'%" + vDS_Report.Trim() + "%'";
                filtro[filtro.Length - 1].vOperador = "LIKE";
            }
            if (!string.IsNullOrEmpty(vModulo))
            {
                Array.Resize(ref filtro, filtro.Length + 1);
                filtro[filtro.Length - 1].vNM_Campo = "a.Modulo";
                filtro[filtro.Length - 1].vVL_Busca = "'" + vModulo.Trim() + "'";
                filtro[filtro.Length - 1].vOperador = "=";
            }
            if (!string.IsNullOrEmpty(vNM_Classe))
            {
                Array.Resize(ref filtro, filtro.Length + 1);
                filtro[filtro.Length - 1].vNM_Campo = "a.NM_Classe";
                filtro[filtro.Length - 1].vVL_Busca = "'" + vNM_Classe.Trim() + "'";
                filtro[filtro.Length - 1].vOperador = "=";
            }
            if (!string.IsNullOrEmpty(vIdent))
            {
                Array.Resize(ref filtro, filtro.Length + 1);
                filtro[filtro.Length - 1].vNM_Campo = "a.Ident";
                filtro[filtro.Length - 1].vVL_Busca = "'" + vIdent.Trim() + "'";
                filtro[filtro.Length - 1].vOperador = "=";
            }
            if (vVersao > 0)
            {
                Array.Resize(ref filtro, filtro.Length + 1);
                filtro[filtro.Length - 1].vNM_Campo = "a.Versao";
                filtro[filtro.Length - 1].vVL_Busca = vVersao.ToString();
                filtro[filtro.Length - 1].vOperador = "=";
            }
            if (vNaoBuscarRelClasse)
            {
                Array.Resize(ref filtro, filtro.Length + 1);
                filtro[filtro.Length - 1].vNM_Campo = "isnull(a.NM_Classe,'')";
                filtro[filtro.Length - 1].vVL_Busca = "''";
                filtro[filtro.Length - 1].vOperador = "=";
            }
            if (vBuscarHomologacao)
            {
                Array.Resize(ref filtro, filtro.Length + 1);
                filtro[filtro.Length - 1].vNM_Campo = "a.ID_RDC";
                filtro[filtro.Length - 1].vVL_Busca = "null";
                filtro[filtro.Length - 1].vOperador = "=";
            }
            if (!string.IsNullOrEmpty(vId_rdc))
            {
                Array.Resize(ref filtro, filtro.Length + 1);
                filtro[filtro.Length - 1].vNM_Campo = "a.id_rdc";
                filtro[filtro.Length - 1].vOperador = "=";
                filtro[filtro.Length - 1].vVL_Busca = "'" + vId_rdc.Trim() + "'";
            }

            TList_Cad_Report lReport = new TCD_Cad_Report().Select(filtro, 0, string.Empty);

            if (vBuscarDTSParam)
            {
                //BUSCA OS DATASOURCES
                foreach (TRegistro_Cad_Report regReport in lReport)
                {
                    regReport.lConsulta = TCN_Cad_Consulta.Busca(0, string.Empty, string.Empty, regReport.ID_Report);
                    foreach (TRegistro_Cad_Consulta regConsulta in regReport.lConsulta)
                    {
                        regConsulta.lParamClasse = TCN_Cad_ParamClasse.BuscaParamClasseSQLString(regConsulta.DS_SQL);
                    }
                }
            }

            return(lReport);
        }
예제 #3
0
        public static string GravarReportConsulta(TRegistro_Cad_Report val, TObjetoBanco banco)
        {
            bool           st_transacao = false;
            TCD_Cad_Report qtb_Report   = new TCD_Cad_Report();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_Report.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_Report.Banco_Dados = banco;
                }

                //GRAVA O REPORT
                string retorno = qtb_Report.GravarReport(val);
                val.ID_Report = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_REPORT"));

                //DELETA AS ANTIGAS AMARRAÇÕES
                new CamadaDados.TDataQuery(qtb_Report.Banco_Dados).executarSql("DELETE TB_CON_Report_X_Consulta " +
                                                                               "WHERE id_report = " + val.ID_Report, null);

                new CamadaDados.TDataQuery(qtb_Report.Banco_Dados).executarSql("UPDATE TB_DIV_MENU set DS_Menu = '" + val.DS_Report + "' " +
                                                                               "WHERE id_report = " + val.ID_Report, null);

                //GRAVA OS DTS
                val.lConsulta.ForEach(p =>
                {
                    p.Login         = Utils.Parametros.pubLogin;
                    string ret_cons = TCN_Cad_Consulta.GravaConsulta(p, qtb_Report.Banco_Dados);
                    TCN_Cad_Report_X_Consulta.GravarReport_X_Consulta(
                        new TRegistro_Cad_Report_X_Consulta()
                    {
                        ID_Report   = val.ID_Report,
                        ID_Consulta = CamadaDados.TDataQuery.getPubVariavel(ret_cons, "@P_ID_CONSULTA")
                    }, qtb_Report.Banco_Dados);

                    p.lParamClasse.ForEach(v => TCN_Cad_ParamClasse.GravarParamClasse(v, qtb_Report.Banco_Dados));
                });

                if (st_transacao)
                {
                    qtb_Report.Banco_Dados.Commit_Tran();
                }
                return(retorno);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_Report.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar relatorio: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_Report.deletarBanco_Dados();
                }
            }
        }
예제 #4
0
        public static string BuscaStringSQL(TRegistro_Cad_Consulta Cad_Consulta, Boolean criarwhere)
        {
            //BUSCA AS TABELAS
            TList_Cad_Amarracoes listaTabelas = TCN_Cad_Amarracoes.Busca(0, Cad_Consulta.ID_Consulta);

            string        SQLConsulta = "";
            StringBuilder SQL         = new StringBuilder();

            if (listaTabelas.Count > 0)
            {
                SQL.AppendLine("SELECT ");
                try
                {
                    //BUSCA OS CAMPOS
                    TList_Cad_Campo listaCampo = TCN_Cad_Campo.Busca(0, Cad_Consulta.ID_Consulta, "");
                    string          virgula    = ", ";
                    SQLConsulta = "";
                    for (int i = 0; i < listaCampo.Count; i++)
                    {
                        SQLConsulta += listaCampo[i].Alias_Campo + "." + listaCampo[i].NM_Campo + virgula;
                        if ((i + 2) == listaCampo.Count)
                        {
                            virgula = "";
                        }
                    }

                    if (listaCampo.Count > 0)
                    {
                        if (SQLConsulta.Trim() != "")
                        {
                            SQL.AppendLine(SQLConsulta);
                            SQLConsulta = "";
                        }
                    }
                    else
                    {
                        SQL.AppendLine(" 1 ");
                    }

                    //BUSCA A TABELA PRINCIPAL E SEPARA OS CAMPOS CERTOS
                    string from = "";
                    string join = "";
                    for (int i = 0; i < listaTabelas.Count; i++)
                    {
                        if (listaTabelas[i].ST_Principal.Trim() == "S")
                        {
                            from = "FROM " + listaTabelas[i].NM_Tabela;
                        }
                        else
                        {
                            TpBusca[] vBusca = new TpBusca[0];
                            Array.Resize(ref vBusca, vBusca.Length + 1);
                            vBusca[vBusca.Length - 1].vNM_Campo = "a.id_tipo_amarracao";
                            vBusca[vBusca.Length - 1].vOperador = "=";
                            vBusca[vBusca.Length - 1].vVL_Busca = "'" + listaTabelas[i].ID_Tipo_Amarracao + "'";

                            string tipoAmarracao = new TCD_Cad_TipoAmarracao().BuscarEscalar(vBusca, "a.sigla_amarracao").ToString();

                            if (tipoAmarracao != "")
                            {
                                TList_Cad_Campo_Amarracao listaCampoTabela = TCN_Cad_Campo_Amarracao.Busca(0, Cad_Consulta.ID_Consulta, 0, listaTabelas[i].ID_Amarracoes);

                                if (listaCampoTabela.Count > 0)
                                {
                                    join += tipoAmarracao + " " + listaTabelas[i].NM_Tabela + " on ";
                                }

                                //BUSCA OS CAMPOS DOS JOINS
                                string and = "";
                                for (int x = 0; x < listaCampoTabela.Count; x++)
                                {
                                    if ((x + 1) < listaCampoTabela.Count)
                                    {
                                        and = " AND ";
                                    }
                                    else
                                    {
                                        and = "";
                                    }
                                    join += listaCampoTabela[x].NM_Tabela_Base + "." + listaCampoTabela[x].Campo_Base;
                                    join += " = ";
                                    join += listaCampoTabela[x].NM_Tabela_Estrangeiro + "." + listaCampoTabela[x].Campo_Estrangeiro + " " + and;
                                }
                            }
                        }
                    }

                    //ADD OS JOIN PARA O SELECT
                    SQLConsulta += from + " " + join;
                    if (SQLConsulta.Trim() != "")
                    {
                        SQL.AppendLine(SQLConsulta);
                        SQLConsulta = "";
                    }

                    if (criarwhere)
                    {
                        //BUSCA OS FILTRO WHERE
                        TList_Cad_Filtro listaFiltro = TCN_Cad_Filtro.Busca(0, Cad_Consulta.ID_Consulta, "");

                        string cond = "WHERE ";
                        for (int i = 0; i < listaFiltro.Count; i++)
                        {
                            if (listaFiltro[i].ID_Operador > 0)
                            {
                                TpBusca[] vBuscaOperador = new TpBusca[0];
                                Array.Resize(ref vBuscaOperador, vBuscaOperador.Length + 1);
                                vBuscaOperador[vBuscaOperador.Length - 1].vNM_Campo = "a.id_operador";
                                vBuscaOperador[vBuscaOperador.Length - 1].vOperador = "=";
                                vBuscaOperador[vBuscaOperador.Length - 1].vVL_Busca = "'" + listaFiltro[i].ID_Operador + "'";

                                string operador = new TCD_Cad_Operador().BuscarEscalar(vBuscaOperador, "a.sigla_operador").ToString();

                                if (operador != "")
                                {
                                    TList_Cad_ParamClasse listaParam = TCN_Cad_ParamClasse.Buscar(listaFiltro[i].ID_ParamClasse, "", "", "", 0, null);

                                    if (operador.Trim().ToUpper() == "LIKE")
                                    {
                                        SQLConsulta += cond + " (" + listaFiltro[i].Alias_Campo + "." + listaFiltro[i].NM_Campo + operador + "'%" + listaParam[0].NM_CampoFormat + "%')";
                                    }
                                    else
                                    {
                                        SQLConsulta += cond + " (" + listaFiltro[i].Alias_Campo + "." + listaFiltro[i].NM_Campo + operador + "'" + listaParam[0].NM_CampoFormat + "')";
                                    }

                                    if ((i + 1) < listaFiltro.Count)
                                    {
                                        if (listaFiltro[(i + 1)].ST_Ligacao == "A")
                                        {
                                            cond = " AND ";
                                        }
                                        else
                                        {
                                            cond = " AND ";
                                        }
                                    }
                                    else
                                    {
                                        cond = " AND ";
                                    }
                                }
                            }
                        }

                        if (SQLConsulta.Trim() != "")
                        {
                            SQL.AppendLine(SQLConsulta);
                            SQLConsulta = "";
                        }
                    }

                    //BUSCA OS CAMPOS DE ORDENAÇÃO
                    TList_Cad_Ordenacao listaOrdenacao = TCN_Cad_Ordenacao.Busca(0, Cad_Consulta.ID_Consulta, "");

                    if (listaOrdenacao.Count > 0)
                    {
                        SQLConsulta += "ORDER BY ";
                    }

                    for (int i = 0; i < listaOrdenacao.Count; i++)
                    {
                        SQLConsulta += listaOrdenacao[i].Alias_Campo + "." + listaOrdenacao[i].NM_Campo + " ";
                        SQLConsulta += listaOrdenacao[i].TP_Ordenacao.Equals("A") ? "ASC" : "DESC";
                        SQLConsulta += "";
                    }

                    if (SQLConsulta.Trim() != "")
                    {
                        SQL.AppendLine(SQLConsulta);
                        SQLConsulta = "";
                    }
                }
                catch (Exception erro)
                {
                    throw new Exception(erro.Message);
                }
            }

            return(SQL.ToString());
        }