private void Validar(HttpPostedFile selectedFile) { //StringBuilder sbF = new StringBuilder(); try { CargarArrayHT(); iCont = 0; iNumOk = 0; if (selectedFile.ContentLength != 0) { string sFichero = selectedFile.FileName; //Grabo el archivo en base de datos byte[] ArchivoEnBinario = new Byte[0]; ArchivoEnBinario = new Byte[selectedFile.ContentLength]; //Crear el array de bytes con la longitud del archivo selectedFile.InputStream.Read(ArchivoEnBinario, 0, selectedFile.ContentLength); //Forzar al control del archivo a cargar los datos en el array int iRows = FICHEROSMANIOBRA.Update(null, Constantes.FicheroDatos, "Fichero origen de CARGA DE DATOS", ArchivoEnBinario); if (iRows == 0) { sErrores = "No existe entrada asociada a este proceso en el fichero de Maniobra"; return; } selectedFile.InputStream.Position = 0; StreamReader r = new StreamReader(selectedFile.InputStream, System.Text.Encoding.UTF7); //StreamReader r = new StreamReader(selectedFile.InputStream, System.Text.Encoding.Unicode); DesdeFichero oDesdeFichero = null; String strLinea = null; while ((strLinea = r.ReadLine()) != "") { if (strLinea == null) { break; } iCont++; oDesdeFichero = validarLinea(DesdeFichero.getFila(strLinea)); if (!validarCampos(oDesdeFichero, true)) { continue; } iNumOk++; } } this.divB.InnerHtml = cabErrores() + sbE + "</table>"; cldLinProc.InnerText = iCont.ToString("#,##0"); cldLinOK.InnerText = iNumOk.ToString("#,##0"); cldLinErr.InnerText = (iCont - iNumOk).ToString("#,##0"); this.hdnIniciado.Value = "T"; } catch (Exception) { sErrores = "El fichero no tiene el formato requerido para el proceso"; } }
private string Procesar() { string sResul = "", lin = "", sLin = ""; int iNumLin = 1; try { CargarArrayHT(); #region Apertura de conexión y transacción try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccion(oConn); } catch (Exception ex) { if (oConn.State == ConnectionState.Open) { Conexion.Cerrar(oConn); } sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex); return(sResul); } #endregion //Leo el fichero de base de datos FICHEROSMANIOBRA oFic = FICHEROSMANIOBRA.Select(tr, Constantes.FicheroDatos); if (oFic.t447_fichero.Length > 0) { #region Leer fichero de BBDD MemoryStream mstr = new MemoryStream(oFic.t447_fichero); mstr.Seek(0, SeekOrigin.Begin); int count = 0; byte[] byteArray = new byte[mstr.Length]; while (count < mstr.Length) { byteArray[count++] = System.Convert.ToByte(mstr.ReadByte()); } lin = FromASCIIByteArray(byteArray); //lin = FromUnicodeByteArray(byteArray); #endregion string[] aArgs = Regex.Split(lin, "\r\n"); DesdeFichero oDesdeFichero = null; string sEstadoMes = ""; int nSegMesProy = 0; for (int iLinea = 0; iLinea < aArgs.Length - 1; iLinea++) { if (aArgs[iLinea] != "") { sLin = aArgs[iLinea]; iNumLin = iLinea + 1; oDesdeFichero = validarLinea(DesdeFichero.getFila(sLin)); int?iProveedor = null; if (oDesdeFichero.t315_idproveedor != 0) { iProveedor = oDesdeFichero.t315_idproveedor; } int?iNodoDestino = null; if (oDesdeFichero.t303_idnododestino != 0) { iNodoDestino = oDesdeFichero.t303_idnododestino; } nSegMesProy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, oDesdeFichero.t305_idproyectosubnodo, (int)oDesdeFichero.t325_annomes); if (nSegMesProy == 0) { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, oDesdeFichero.t305_idproyectosubnodo, (int)oDesdeFichero.t325_annomes); nSegMesProy = SEGMESPROYECTOSUBNODO.Insert(tr, oDesdeFichero.t305_idproyectosubnodo, (int)oDesdeFichero.t325_annomes, sEstadoMes, 0, 0, false, 0, 0); } DATOECO.Insert(tr, nSegMesProy, oDesdeFichero.t329_idclaseeco, oDesdeFichero.t376_motivo, (decimal)oDesdeFichero.t376_importe, (oDesdeFichero.t329_necesidad == "N") ? iNodoDestino : null, (oDesdeFichero.t329_necesidad == "P") ? iProveedor : null, Constantes.FicheroDatos, oDesdeFichero.t422_idmoneda); } } } sResul = "OK@#@"; Conexion.CommitTransaccion(tr); } catch (Exception ex) { //Errores.mostrarError("Error al tramitar el fichero", ex); sResul = "Error@#@" + Errores.mostrarError("Error al procesar el fichero en la línea " + iNumLin.ToString() + " : " + sLin, ex); Conexion.CerrarTransaccion(tr); } finally { Conexion.Cerrar(oConn); } return(sResul); }