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); }
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); }
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(); } } }
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()); }