private void LecturaDeArchivoYGuardadoDeDatos(string Destino) { try { CustomOleDbConnection cn = new CustomOleDbConnection(Destino); cn.Open(); cn.setCommand("SELECT * FROM tbl_LibrasPlaneadas WHERE [Clave Invernadero] <> ''"); //AND [Año Plantación] <> '' AND [Semana Plantación] <> '' AND [Interplanting] <> '' AND [Número De Corte] <> '' AND [Semana De Corte] <> '' AND [Año De Corte] <> '' AND [Libras] <> '' DataTable dtL = cn.executeQuery(); foreach (DataColumn C in dtL.Columns) { string columnName = C.ColumnName; columnName = columnName.Replace("á", "a").Replace("é", "e").Replace("í", "i").Replace("ó", "o").Replace("ú", "u").Replace("ñ", "ni"); columnName = Regex.Replace(columnName, "[^a-zA-Z0-9]+", "", RegexOptions.Compiled); C.ColumnName = columnName; } if (dtL.Rows.Count > 0) { DataAccess da = new DataAccess(); DataTable dt = da.executeStoreProcedureDataTable("spr_InsertarCajasPlaneadas", new Dictionary <string, object>() { { "@LibrasPlaneadas", dtL }, { "@idUsuario", 0 } }); if (dt.Rows.Count > 0) { if (dt.Rows[0]["Estado"].ToString().Equals("1")) { fu_Plantilla.Dispose(); popUpMessageControl1.setAndShowInfoMessage("Se ha importado correctamente la plantilla.", Comun.MESSAGE_TYPE.Success); } else { fu_Plantilla.Dispose(); popUpMessageControl1.setAndShowInfoMessage("No fué posible importar la plantilla.", Comun.MESSAGE_TYPE.Error); } } else { fu_Plantilla.Dispose(); popUpMessageControl1.setAndShowInfoMessage("No fué posible importar la plantilla.", Comun.MESSAGE_TYPE.Error); } } else { fu_Plantilla.Dispose(); log.Error("El archivo no tiene información para leer."); popUpMessageControl1.setAndShowInfoMessage("El archivo no tiene información para leer.", Comun.MESSAGE_TYPE.Info); } cn.Close(); }catch (Exception x) { fu_Plantilla.Dispose(); log.Error(x); popUpMessageControl1.setAndShowInfoMessage("Error en la importación, descargue la plantilla llene el formato e intente subirlo de nuevo.", Comun.MESSAGE_TYPE.Error); } }
public void readFile(string Destino, int anioPartida, int semanaPartida, string[] idsDePlantas) { int registrosProcesados = 0; CustomOleDbConnection cn = new CustomOleDbConnection(Destino); DataAccess da = new DataAccess(); DataTable dtCiclos = null; var errorInvernadero = false; string CiclosSinCorte1 = ""; string CiclosError = ""; bool Sobreescribir = false; string idsPlantas = String.Join(",", idsDePlantas); try { List <string> Formatos = new List <string>(); TimeCalculator timeCalculator = new TimeCalculator(); if (CheckSobreescribirCiclos.Checked) { Sobreescribir = true; cn.Open(); // cn.setCommand("SELECT * FROM Ciclos WHERE planta IN (" + idsPlantas + ") AND (semanap >= " + semanaPartida + " AND aniop >= " + anioPartida + ") AND planta IS NOT NULL AND numcorte IS NOT NULL"); cn.setCommand("SELECT * " + "FROM Ciclos c " + "WHERE c.planta IN (" + idsPlantas + ") " + "AND planta IS NOT NULL " + "AND variedad IS NOT NULL" + "AND numcorte IS NOT NULL" ); dtCiclos = cn.executeQuery(); cn.Close(); } else { cn.Open(); // cn.setCommand("SELECT * FROM Ciclos WHERE planta IN (" + idsPlantas + ") AND (semanap >= " + semanaPartida + " AND aniop >= " + anioPartida + ") AND planta IS NOT NULL AND numcorte IS NOT NULL"); cn.setCommand("SELECT * " + "FROM Ciclos c " + "WHERE c.planta IN (" + idsPlantas + ") " + "AND planta IS NOT NULL AND numcorte IS NOT NULL" ); dtCiclos = cn.executeQuery(); cn.Close(); } if (dtCiclos != null) { if (dtCiclos.Rows.Count > 0) { //Proceso para la importacion de los ciclos DataTable dtCycles = CycleTable(); DataTable dtCyclesDetail = CycleDetailTable(); int index = -1; string lastCombination = string.Empty; int ciclosSinConfigurar = 0; foreach (DataRow R in dtCiclos.Rows) { if (!R["numcorte"].ToString().Trim().Equals("")) { string planta = R["planta"].ToString().Trim(); string invernadero = R["invernadero"].ToString().Trim(); if (invernadero.Length > 4) { errorInvernadero = true; } string variedad = R["variedad"].ToString().Trim(); string semanap = R["semanap"].ToString().Trim(); string aniop = R["aniop"].ToString().Trim(); string semanapc = R["semanapc"].ToString().Trim(); string aniopc = R["aniopc"].ToString().Trim(); string interplanting = R["interplanting"].ToString().Trim().Equals("2") ? "1" : "0"; string codigoprefijo = R["codigoprefijo"].ToString().Trim(); string corte = R["numcorte"].ToString().Trim(); string semana = R["semana"].ToString().Trim(); string anio = R["año"].ToString().Trim(); string fallo = R["fallo"].ToString().Trim(); string suelo = R["suelo"].ToString().Trim(); if (lastCombination != (planta + invernadero + variedad + semanap + aniop + semanapc + aniopc + interplanting + codigoprefijo + suelo)) { /*Ciclo nuevo. Revisar corte 1*/ if (!corte.Equals("1")) { if (!CiclosSinCorte1.Contains("<br/>Planta: " + planta + " Invernadero: " + invernadero + " Plantación: " + semanap + "/" + aniop)) { CiclosSinCorte1 += "<br/>Planta: " + planta + " Invernadero: " + invernadero + " Plantación: " + semanap + "/" + aniop; } } else { lastCombination = planta + invernadero + variedad + semanap + aniop + semanapc + aniopc + interplanting + codigoprefijo + suelo; DataRow dr = dtCycles.NewRow(); int p = 0; int semp = 0; int anp = 0; int sempc = 0; int anpc = 0; int interp = 0; int vari = 0; int su = 0; index++; dr[0] = index; if (int.TryParse(planta.ToString(), out p)) { dr[1] = p; } else { CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en la planta."; } if (p == Int32.Parse(invernadero[0].ToString())) { DataTable dtSearch = da.executeStoreProcedureDataTable("spr_getSearch", new Dictionary <string, object>() { { "@buscar", "GreenHouse" }, { "@valor", invernadero } }); if (dtSearch.Rows.Count > 0) { dr[2] = invernadero; } else { CiclosError += "<br/>El codigo del invernadero " + invernadero + " no es válido."; } } else { CiclosError += "<br/>El invernadero " + invernadero + " no pertenece a la planta " + planta + "."; } if (int.TryParse(variedad.ToString(), out vari)) { dr[3] = vari; } else { CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en la variedad."; } if (int.TryParse(semanap.ToString(), out semp)) { dr[4] = semp; } else { CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en la semana de plantación."; } if (int.TryParse(aniop.ToString(), out anp)) { dr[5] = anp; } else { CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto el año de plantación."; } if (int.TryParse(semanapc.ToString(), out sempc)) { dr[6] = sempc; } else { CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en la semana de primer corte."; } if (int.TryParse(aniopc.ToString(), out anpc)) { dr[7] = anpc; } else { CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en el año de primer corte."; } if (int.TryParse(interplanting.ToString(), out interp)) { dr[8] = interp; } else { CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en interplanting."; } dr[9] = codigoprefijo; if (int.TryParse(suelo.ToString(), out su)) { dr[10] = su; } dtCycles.Rows.Add(dr); } } else { //incremento = true; } decimal d = 0; int co = 0; int se = 0; int an = 0; for (int i = 14; i < dtCiclos.Columns.Count; i++) { DataRow drD = dtCyclesDetail.NewRow(); drD[0] = index; if (int.TryParse(corte.ToString(), out co)) { drD[1] = co; } else { CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en el corte."; } if (int.TryParse(semana.ToString(), out se)) { drD[2] = se; } else { CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en la semana."; } if (int.TryParse(anio.ToString(), out an)) { drD[3] = an; } else { CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en el año."; } drD[4] = fallo; drD[5] = dtCiclos.Columns[i].ColumnName.Trim(); if (R[dtCiclos.Columns[i].ColumnName].ToString().Trim().Equals(""))//se valida si el ciclo tiene libras { if (!CiclosError.Contains("<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " no se le configuraron libras.")) { CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " no se le configuraron libras."; } } else { if (decimal.TryParse(R[dtCiclos.Columns[i].ColumnName].ToString().Trim(), System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d)) { drD[6] = d.ToString("0.000000000000");//libras } else { CiclosError += "<br/>El ciclo de la planta " + planta + " invernadero " + invernadero + " de la semana " + semanap + " en el año " + aniop + " tiene el formato incorrecto en las libras."; } } dtCyclesDetail.Rows.Add(drD); registrosProcesados++; } } else { ciclosSinConfigurar++; } } Dictionary <string, object> prm = new Dictionary <string, object>(); prm.Add("@Ciclos", dtCycles); prm.Add("@Cortes", dtCyclesDetail); prm.Add("@semanaUnion", timeCalculator.getActualWeek()); prm.Add("@anioUnion", timeCalculator.getYearFromDate(DateTime.Now)); prm.Add("@Sobreescribir", Sobreescribir ? 1 : 0); prm.Add("@semanaPartida", semanaPartida); prm.Add("@anioPartida", anioPartida); prm.Add("@idUser", int.Parse(System.Web.HttpContext.Current.Session["userIDInj"].ToString())); if (errorInvernadero) { popUpMessageControl1.setAndShowInfoMessage("Los invernaderos deben anotarse con máximo 4 caracteres", Comun.MESSAGE_TYPE.Success); } else { if (CiclosSinCorte1.Equals("")) { if (CiclosError.Equals("")) { foreach (DataRow row in dtCiclos.Rows) { if (dtCiclos.Rows.Count != 0) { foreach (DataColumn tr in dtCiclos.Columns) { Formatos.Add(string.Format("{0}", tr.DataType)); } } } //divGrid.InnerHtml = ConvertDataTableToHTML(dtCiclos, "<table class=\"grid\" cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"gv_Ciclos\" style=\"border-collapse:collapse;\">", Formatos); DataSet dt = da.executeStoreProcedureDataSet("spr_EjecucionImportar", prm); if (dt.Tables[0].Rows[0][0].ToString().Equals("ok")) { if (ciclosSinConfigurar == 0) { popUpMessageControl1.setAndShowInfoMessage("La ejecución se cargó exitosamente.<br />Se guardaron " + (index + 1) + " ciclos.", Comun.MESSAGE_TYPE.Success); } else { popUpMessageControl1.setAndShowInfoMessage("La ejecución se cargó exitosamente, sin embargo " + ciclosSinConfigurar + " ciclos fueron omitidos ya que no estaban configurados en la plantilla.", Comun.MESSAGE_TYPE.Success);//Este cas ya no sale porque se omiten en el primer select } } else { switch (dt.Tables[0].Rows[0]["ErrorNumber"].ToString()) { case "801": popUpMessageControl1.setAndShowInfoMessage("Existen productos o variedades configuradas en la plantilla que no se encuentran en el sistema.<br/>" + DTtoHTMLstring(dt.Tables[1], ""), Comun.MESSAGE_TYPE.Error); break; case "802": popUpMessageControl1.setAndShowInfoMessage("Existen invernaderos configurados en la plantilla que no se encuentran en el sistema.<br/>" + DTtoHTMLstring(dt.Tables[1], ""), Comun.MESSAGE_TYPE.Error); break; case "245": popUpMessageControl1.setAndShowInfoMessage("Error en la conversión de tipo de dato.<br/> " + DTtoHTMLstring(dt.Tables[1], ""), Comun.MESSAGE_TYPE.Error); break; default: popUpMessageControl1.setAndShowInfoMessage("No se logró completar la importación: " + dt.Tables[0].Rows[0]["ErrorMessage"].ToString(), Comun.MESSAGE_TYPE.Error); break; } } } else { popUpMessageControl1.setAndShowInfoMessage("La importación no puede continuar: <br /><br />" + CiclosError, Comun.MESSAGE_TYPE.Error); } } else { popUpMessageControl1.setAndShowInfoMessage("Imposible importar la ejecución porque los siguientes ciclos no tienen Corte 1:<br/><br/>" + CiclosSinCorte1, Comun.MESSAGE_TYPE.Error); } } } else { popUpMessageControl1.setAndShowInfoMessage("No existen ciclos con semana y año mayores a los especificados.", Comun.MESSAGE_TYPE.Error); } } else { popUpMessageControl1.setAndShowInfoMessage("Revise que las tablas de ciclos y marcas no hayan sido alteradas.", Comun.MESSAGE_TYPE.Error); } } catch (Exception ex) { Log.Error(ex); //popUpMessageControl1.setAndShowInfoMessage("No se pudo cargar la ejecución. El último registro procesado es el " + registrosProcesados.ToString(), Comun.MESSAGE_TYPE.Error); popUpMessageControl1.setAndShowInfoMessage(ex.Message, Comun.MESSAGE_TYPE.Error); } finally { cn.Close(); } }
private bool LecturaDeArchivoYCreacionDeTablas(string Destino) { CustomOleDbConnection cn = new CustomOleDbConnection(Destino); DataSet ds = null; DataSet dsPlanta = null; try { cn.Open(); //saco invernaderos cn.setCommand("SELECT * FROM Volumen"); ds = cn.executeQuery(); //saco de que planta es: cn.setCommand("SELECT * FROM Planta"); dsPlanta = cn.executeQuery(); cn.Close(); } catch (Exception e) { Log.Error(e.ToString()); popUpMessageControl1.setAndShowInfoMessage("No fue posible leer desde el archivo excel.", Common.MESSAGE_TYPE.Info); } finally { cn.Close(); } if (ds != null) { if (ds.Tables[0].Rows.Count > 0) { System.Text.StringBuilder xmlString = new System.Text.StringBuilder(); xmlString.AppendFormat("<{0}>", "Plantilla"); foreach (DataRow row in ds.Tables[0].Rows) { for (int i = 1; i < ds.Tables[0].Columns.Count - 1; i++) { row.ItemArray[i].ToString(); xmlString.AppendFormat("<c><idPlanta>{0}</idPlanta>", dsPlanta.Tables[0].Rows[0]["Planta"].ToString()); //Planta xmlString.AppendFormat("<idInv>{0}</idInv>", row.ItemArray[0].ToString().Trim()); //Invernadero xmlString.AppendFormat("<nomBoquilla>{0}</nomBoquilla>", ds.Tables[0].Columns[i + 1].ColumnName.ToString().Trim()); //nombre de boquilla xmlString.AppendFormat("<volumen>{0}</volumen></c>", String.IsNullOrEmpty(row.ItemArray[i + 1].ToString().Trim()) ? "0" : row.ItemArray[i + 1].ToString().Trim()); //volumen } } xmlString.AppendFormat("</{0}>", "Plantilla"); var parameters = new Dictionary <string, object>(); parameters.Add("@Plantilla", xmlString.ToString()); try { DataAccess.executeStoreProcedureNonQuery("spr_INSERT_Plantilla", parameters, this.Session["connection"].ToString()); popUpMessageControl1.setAndShowInfoMessage("Datos Guardados", Common.MESSAGE_TYPE.Success); } catch (Exception ex) { Log.Error(ex.ToString()); popUpMessageControl1.setAndShowInfoMessage("No fue posible insertar datos.", Common.MESSAGE_TYPE.Info); } } } return(true); }