public DataSet GetReport2(string username, string password, string report_name, List <ReportParam> report_params) { //HACK: hasta que este llena vw_int_usuarios_ext if (ConfigurationManager.AppSettings["validate_users_ext"] == "yes") { var usr = DaoLib.login_usuario_ext(username, password); if (usr.Count == 0) { throw new InvalidOperationException("Usuario/Password invalido, por favor contactese con el administrador."); } } else { if (username != "oldarmada" || password != "passarmada") { throw new InvalidOperationException("Usuario/Password invalido, por favor contactese con el administrador."); } } //Verificar que tiene permisos para ejecutar el reporte var reportes = DaoLib.obtener_reportes_para_usuario(username); var reporte = reportes.Find(o => (o as Dictionary <string, string>)["NOMBRE"] == report_name) as Dictionary <string, string>; if (reporte == null) { throw new UnauthorizedAccessException(string.Format("No tiene permisos para ejecutar el reporte [{0}]", report_name)); } var rep = DaoLib.reporte_obtener_str(report_name) as Dictionary <string, string>; var _params = DaoLib.reporte_obtener_parametros_str(report_name); var lparams = new List <OracleParameter>(); foreach (var report_param in report_params) { var param = _params.Find(o => (o as Dictionary <string, string>)["NOMBRE"].ToLower() == report_param.nombre.ToLower()) as Dictionary <string, string>; object value = report_param.valor; var pname = ":p" + param["INDICE"].ToString(); string tmp = rep["CONSULTA_SQL"]; int qcount = tmp.Select((c, j) => tmp.Substring(j)).Count(sub => sub.StartsWith(pname)); for (int k = 0; k < qcount; k++) { if (param["TIPO_DATO"] == "0") { lparams.Add(new OracleParameter(pname, OracleDbType.Date, DateTime.ParseExact(value.ToString(), "dd-MM-yy", CultureInfo.InvariantCulture), System.Data.ParameterDirection.Input)); } if (param["TIPO_DATO"] == "1") { lparams.Add(new OracleParameter(pname, OracleDbType.Varchar2, value, System.Data.ParameterDirection.Input)); } if (param["TIPO_DATO"] == "2") { lparams.Add(new OracleParameter(pname, OracleDbType.Varchar2, value, System.Data.ParameterDirection.Input)); } if (param["TIPO_DATO"] == "3") { lparams.Add(new OracleParameter(pname, OracleDbType.Varchar2, value, System.Data.ParameterDirection.Input)); } } } var cmd = new OracleCommand(rep["CONSULTA_SQL"]); cmd.Parameters.AddRange(lparams.ToArray()); string constr = ConfigurationManager.ConnectionStrings["default"].ConnectionString; DataSet dataset = new DataSet(); using (OracleConnection con = new OracleConnection(constr)) { con.Open(); cmd.Connection = con; var adapter = new OracleDataAdapter(cmd); adapter.Fill(dataset); } return(dataset); }