protected string Grabar(string strDatos) { string sResul = "", sDesc = "", sElementosInsertados = ""; int nAux = 0; #region abrir conexión y transacción try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccionSerializable(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 try { string[] aCategoria = Regex.Split(strDatos, "///"); foreach (string oCategoria in aCategoria) { if (oCategoria == "") { continue; } string[] aValores = Regex.Split(oCategoria, "##"); //0. Opcion BD. "I", "U", "D" //1. ID Categoría //2. Descripcion //3. Hora //4. Jornada switch (aValores[0]) { case "I": nAux = CATEGSUPER.Insert(tr, Utilidades.unescape(aValores[2]), decimal.Parse(aValores[3]), decimal.Parse(aValores[4])); if (sElementosInsertados == "") { sElementosInsertados = nAux.ToString(); } else { sElementosInsertados += "//" + nAux.ToString(); } break; case "U": CATEGSUPER.Update(tr, int.Parse(aValores[1]), Utilidades.unescape(aValores[2]), decimal.Parse(aValores[3]), decimal.Parse(aValores[4])); break; case "D": CATEGSUPER.Delete(tr, int.Parse(aValores[1])); break; } } Conexion.CommitTransaccion(tr); sResul = "OK@#@" + sElementosInsertados; } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("Error al grabar las tarifas.", ex, false) + "@#@" + sDesc; } finally { Conexion.Cerrar(oConn); } return(sResul); }