コード例 #1
0
    private string Eliminar(int nNivel, int nIDItem)
    {
        try
        {
            switch (nNivel)
            {
            case 1: SUPERNODO4.Delete(null, nIDItem); break;

            case 2: SUPERNODO3.Delete(null, nIDItem); break;

            case 3: SUPERNODO2.Delete(null, nIDItem); break;

            case 4: SUPERNODO1.Delete(null, nIDItem); break;

            case 5: NODO.Delete(null, nIDItem); break;

            case 6: SUBNODO.Delete(null, nIDItem); break;
            }

            return("OK@#@");
        }
        catch (Exception ex)
        {
            //return "Error@#@" + Errores.mostrarError("Error al obtener la estructura organizativa", ex);
            if (Errores.EsErrorIntegridad(ex))
            {
                return("Error@#@Operación rechazada.\n\n" + Errores.mostrarError("Error al obtener la estructura organizativa", ex));                               //ex.Message;
            }
            else
            {
                return("Error@#@" + Errores.mostrarError("Error al obtener la estructura organizativa", ex));
            }
        }
    }
コード例 #2
0
    private string Eliminar(int nNivel, int nIDItem)
    {
        IB.SUPER.ADM.SIC.BLL.UnidadPreventa  oUnidad  = new IB.SUPER.ADM.SIC.BLL.UnidadPreventa();
        IB.SUPER.ADM.SIC.BLL.AreaPreventa    oArea    = new IB.SUPER.ADM.SIC.BLL.AreaPreventa();
        IB.SUPER.ADM.SIC.BLL.SubareaPreventa oSubArea = new IB.SUPER.ADM.SIC.BLL.SubareaPreventa();
        try
        {
            switch (nNivel)
            {
            case 1:
                oUnidad.Delete((short)nIDItem);
                oUnidad.Dispose();
                break;

            case 2:
                oArea.Delete(nIDItem);
                oArea.Dispose();
                break;

            case 3:
                oSubArea.Delete(nIDItem);
                oSubArea.Dispose();
                break;
            }

            return("OK@#@");
        }
        catch (Exception ex)
        {
            if (Errores.EsErrorIntegridad(ex))
            {
                return("Error@#@Operación rechazada.\n\n" + Errores.mostrarError("Error al obtener la estructura preventa", ex));
            }
            else
            {
                return("Error@#@" + Errores.mostrarError("Error al obtener la estructura preventa", ex));
            }
        }
        finally
        {
            switch (nNivel)
            {
            case 1:
                oUnidad.Dispose();
                break;

            case 2:
                oArea.Dispose();
                break;

            case 3:
                oSubArea.Dispose();
                break;
            }
        }
    }
コード例 #3
0
    private string Grabar(string sMotivo, string sBD, string sAccSuper, string sAccIAP, string sAccPST, string sAccPGE, string sAccADP)
    {
        string         sResul = "";
        SqlConnection  oConn  = null;
        SqlTransaction tr;

        #region abrir 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
        try
        {
            Session["OCULTAR_AUDITORIA"] = sBD;
            ACCESOAPLI.Update(tr, byte.Parse(ConfigurationManager.AppSettings["CODIGO_APLICACION"]), "", (sAccSuper == "1") ? true : false,
                              sMotivo, null, null, (sBD == "1") ? true : false);
            ACCESOMODULO.Update(tr, "IAP", (sAccIAP == "1") ? true : false);
            ACCESOMODULO.Update(tr, "PST", (sAccPST == "1") ? true : false);
            ACCESOMODULO.Update(tr, "PGE", (sAccPGE == "1") ? true : false);
            ACCESOMODULO.Update(tr, "ADP", (sAccADP == "1") ? true : false);

            Conexion.CommitTransaccion(tr);
            HttpContext.Current.Cache.Remove("ModuloAccesible");
            sResul = "OK@#@";
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);

            if (Errores.EsErrorIntegridad(ex))
            {
                sResul = "Error@#@Operación rechazada.\n\n" + Errores.mostrarError("Error al grabar los valores", ex, false);                                //ex.Message;
            }
            else
            {
                sResul = "Error@#@" + Errores.mostrarError("Error al grabar los valores", ex, false);
            }
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
コード例 #4
0
    private string Eliminar(int nNivel, int nIDItem)
    {
        try
        {
            switch (nNivel)
            {
            case 1:
                TIPOLOGIAPROY.Delete(null, (byte)nIDItem);
                break;

            case 2:
                GRUPONAT.Delete(null, nIDItem);
                break;

            case 3:
                SUBGRUPONAT.Delete(null, nIDItem);
                break;

            case 4:
                NATURALEZA.Delete(null, nIDItem);
                break;
            }

            return("OK@#@");
        }
        catch (Exception ex)
        {
            //return "Error@#@" + Errores.mostrarError("Error al obtener la estructura organizativa", ex);
            if (Errores.EsErrorIntegridad(ex))
            {
                return("Error@#@Operación rechazada.\n\n" + Errores.mostrarError("Error al obtener la estructura tipología-naturaleza", ex, false) + "@#@" + Errores.CampoResponsableIntegridad(ex));                             //ex.Message;
            }
            else
            {
                return("Error@#@" + Errores.mostrarError("Error al obtener la estructura tipología-naturaleza", ex));
            }
        }
    }
コード例 #5
0
        public static string Grabar(string strDatos)
        {
            string sDen    = "";
            string sAccion = "";

            #region Inicio Transacción

            SqlConnection  oConn;
            SqlTransaction tr;
            try
            {
                oConn = Conexion.Abrir();
                tr    = Conexion.AbrirTransaccion(oConn);
            }
            catch (Exception ex)
            {
                throw (new Exception("Error al abrir la conexion", ex));
            }

            #endregion

            try
            {
                #region Grabar

                string   sIdCuenta = "";
                string[] aCuenta   = Regex.Split(strDatos, "@cuenta@");
                foreach (string sCuenta in aCuenta)
                {
                    if (sCuenta != "")
                    {
                        string[] aDatosCuenta = Regex.Split(sCuenta, "@dato@");
                        sAccion = aDatosCuenta[0];
                        sDen    = aDatosCuenta[2];
                        switch (sAccion)
                        {
                        case "I":
                            //aDatosCuenta[1]-->IDCuenta
                            //aDatosCuenta[2]-->Denominacion
                            //aDatosCuenta[3]-->IdSegemento
                            //aDatosCuenta[4]-->Estado
                            sIdCuenta += DAL.CuentasCVT.Insert(tr, aDatosCuenta[2].ToString(), int.Parse(aDatosCuenta[3].ToString()), (aDatosCuenta[4].ToString() == "true") ? byte.Parse("1") : byte.Parse("0"), null) + "//";
                            break;

                        case "U":
                            DAL.CuentasCVT.Update(tr, int.Parse(aDatosCuenta[1].ToString()), aDatosCuenta[2].ToString(), int.Parse(aDatosCuenta[3].ToString()), (aDatosCuenta[4].ToString() == "true") ? byte.Parse("1") : byte.Parse("0"));
                            break;

                        case "D":
                            //sDenominacionDelete = aDatosCuenta[2];
                            DAL.CuentasCVT.Delete(tr, int.Parse(aDatosCuenta[1].ToString()));
                            break;
                        }
                    }
                }

                #endregion
                Conexion.CommitTransaccion(tr);
                return("OK@#@" + sIdCuenta);
            }
            catch (Exception ex)
            {
                Conexion.CerrarTransaccion(tr);
                if (Errores.EsErrorIntegridad(ex))
                {
                    if (sAccion == "D")
                    {
                        throw new Exception("ErrorControlado##EC##No se puede eliminar la cuenta \"" + sDen + "\" por tener elementos relacionados.");
                    }
                    else
                    {
                        throw new Exception("ErrorControlado##EC##No se puede grabar la cuenta \"" + sDen + "\" porque ya existe esa denominación.");
                    }
                }
                else
                {
                    throw ex;
                }
            }
            finally
            {
                Conexion.Cerrar(oConn);
            }
        }
コード例 #6
0
    private string Grabar(string strDatos)
    {
        string         sResul = "", sValoresInsertados = "";
        SqlConnection  oConn = null;
        SqlTransaction tr;

        #region abrir 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
        try
        {
            string[] aDatos = Regex.Split(strDatos, "///");

            foreach (string oEstructura in aDatos)
            {
                if (oEstructura == "")
                {
                    continue;
                }
                string[] aEstructura = Regex.Split(oEstructura, "##");

                ///aEstructura[0] = Opcion BD. "I", "U", "D"
                ///aEstructura[1] = ID Proveedor
                ///aEstructura[2] = Control de huecos

                switch (aEstructura[0])
                {
                case "U":
                    PROVEEDOR.Upd_Control_Huecos(tr, int.Parse(aEstructura[1]), (aEstructura[2] == "1")?true:false);
                    break;

                case "D":
                case "I":
                    break;
                }
            }
            Conexion.CommitTransaccion(tr);

            sResul = "OK@#@" + sValoresInsertados;
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);

            if (Errores.EsErrorIntegridad(ex))
            {
                sResul = "Error@#@Operación rechazada.\n\n" + Errores.mostrarError("Error al grabar los valores", ex, false);                                //ex.Message;
            }
            else
            {
                sResul = "Error@#@" + Errores.mostrarError("Error al grabar los valores", ex, false);
            }
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
コード例 #7
0
    private string Grabar(string sIdEstructura, string sDenominacion, string sObligatorio, string strDatos)
    {
        string         sResul = "", sValoresInsertados = "";
        SqlConnection  oConn = null;
        SqlTransaction tr;

        #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
        {
            //Datos básicos
            switch (nNivel)
            {
            case "0":
                NODO.Update(tr,
                            int.Parse(sIdEstructura),
                            Utilidades.unescape(sDenominacion),
                            (sObligatorio == "1") ? true : false
                            );
                break;

            case "1":
                SUPERNODO1.Update(tr,
                                  int.Parse(sIdEstructura),
                                  Utilidades.unescape(sDenominacion),
                                  (sObligatorio == "1") ? true : false
                                  );
                break;

            case "2":
                SUPERNODO2.Update(tr,
                                  int.Parse(sIdEstructura),
                                  Utilidades.unescape(sDenominacion),
                                  (sObligatorio == "1") ? true : false
                                  );
                break;

            case "3":
                SUPERNODO3.Update(tr,
                                  int.Parse(sIdEstructura),
                                  Utilidades.unescape(sDenominacion),
                                  (sObligatorio == "1") ? true : false
                                  );
                break;

            case "4":
                SUPERNODO4.Update(tr,
                                  int.Parse(sIdEstructura),
                                  Utilidades.unescape(sDenominacion),
                                  (sObligatorio == "1") ? true : false
                                  );
                break;
            }

            cargarEstructura();

            #region Estructura
            string[] aDatos = Regex.Split(strDatos, "///");

            foreach (string oEstructura in aDatos)
            {
                if (oEstructura == "")
                {
                    continue;
                }
                string[] aEstructura = Regex.Split(oEstructura, "##");
                ///aEstructura[0] = Opcion BD. "I", "U", "D"
                ///aEstructura[1] = ID Estructura
                ///aEstructura[2] = Orden

                switch (aEstructura[0])
                {
                case "U":
                    switch (nNivel)
                    {
                    case "0":
                        CDP.UpdateSimple(tr, int.Parse(aEstructura[1]), byte.Parse(aEstructura[2]));
                        break;

                    case "1":
                        CSN1P.UpdateSimple(tr, int.Parse(aEstructura[1]), byte.Parse(aEstructura[2]));
                        break;

                    case "2":
                        CSN2P.UpdateSimple(tr, int.Parse(aEstructura[1]), byte.Parse(aEstructura[2]));
                        break;

                    case "3":
                        CSN3P.UpdateSimple(tr, int.Parse(aEstructura[1]), byte.Parse(aEstructura[2]));
                        break;

                    case "4":
                        CSN4P.UpdateSimple(tr, int.Parse(aEstructura[1]), byte.Parse(aEstructura[2]));
                        break;
                    }
                    break;

                case "D":
                    switch (nNivel)
                    {
                    case "0":
                        CDP.Delete(tr, int.Parse(aEstructura[1]));
                        break;

                    case "1":
                        CSN1P.Delete(tr, int.Parse(aEstructura[1]));
                        break;

                    case "2":
                        CSN2P.Delete(tr, int.Parse(aEstructura[1]));
                        break;

                    case "3":
                        CSN3P.Delete(tr, int.Parse(aEstructura[1]));
                        break;

                    case "4":
                        CSN4P.Delete(tr, int.Parse(aEstructura[1]));
                        break;
                    }
                    break;
                }
            }
            #endregion

            Conexion.CommitTransaccion(tr);

            sResul = "OK@#@" + sValoresInsertados;
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);

            if (Errores.EsErrorIntegridad(ex))
            {
                sResul = "Error@#@Operación rechazada.\n\n" + Errores.mostrarError("Error al grabar los valores", ex, false);                                //ex.Message;
            }
            else
            {
                sResul = "Error@#@" + Errores.mostrarError("Error al grabar los valores", ex, false);
            }
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
コード例 #8
0
        public static string Grabar(string strDatos)
        {
            int            nAux = 0;
            string         sDenominacionDelete = "";
            string         sAccion             = "";
            SqlConnection  oConn = null;
            SqlTransaction tr;
            string         sElementosInsertados = "";
            string         sResul  = "";
            bool           bActiva = true;

            #region Conexión
            try
            {
                oConn = Conexion.Abrir();
                tr    = Conexion.AbrirTransaccion(oConn);
            }
            catch (Exception ex)
            {
                throw (new Exception("Error al abrir la conexion", ex));
            }
            #endregion

            try
            {
                string[] aConocimiento = Regex.Split(strDatos, "///");
                foreach (string oConocimiento in aConocimiento)
                {
                    string[] aValores = Regex.Split(oConocimiento, "##");
                    sAccion             = aValores[0];
                    sDenominacionDelete = "";
                    //0. Opcion BD. "I", "U", "D"
                    //1. ID Conocimiento
                    //2. Tipo de conocimiento
                    //3. Denominación
                    //4. Activo
                    switch (aValores[0])
                    {
                    case "I":
                        if (aValores[4] == "1")
                        {
                            bActiva = true;
                        }
                        else
                        {
                            bActiva = false;
                        }
                        switch (aValores[2])
                        {
                        case "1":         //1- Sectorial
                            nAux = DAL.AreaConocimientoCTV.InsertConSec(tr, Utilidades.unescape(aValores[3]), bActiva);
                            if (sElementosInsertados == "")
                            {
                                sElementosInsertados = nAux.ToString();
                            }
                            else
                            {
                                sElementosInsertados += "//" + nAux.ToString();
                            }
                            break;

                        case "2":         //2- Tecnológico
                            nAux = DAL.AreaConocimientoCTV.InsertConTec(tr, Utilidades.unescape(aValores[3]), bActiva);
                            if (sElementosInsertados == "")
                            {
                                sElementosInsertados = nAux.ToString();
                            }
                            else
                            {
                                sElementosInsertados += "//" + nAux.ToString();
                            }
                            break;

                        default:
                            break;
                        }
                        break;

                    case "U":
                        if (aValores[4] == "1")
                        {
                            bActiva = true;
                        }
                        else
                        {
                            bActiva = false;
                        }
                        switch (aValores[2])
                        {
                        case "1":         //1- Sectorial
                            DAL.AreaConocimientoCTV.UpdateConSec(tr, int.Parse(aValores[1]), Utilidades.unescape(aValores[3]), bActiva);
                            break;

                        case "2":         //2- Tecnológico
                            DAL.AreaConocimientoCTV.UpdateConTec(tr, int.Parse(aValores[1]), Utilidades.unescape(aValores[3]), bActiva);
                            break;
                        }

                        break;

                    case "D":
                        sDenominacionDelete = aValores[3];
                        switch (aValores[2])
                        {
                        case "1":         //1- Sectorial
                            DAL.AreaConocimientoCTV.DeleteConSec(tr, short.Parse(aValores[1]));
                            break;

                        case "2":         //2- Tecnológico
                            DAL.AreaConocimientoCTV.DeleteConTec(tr, short.Parse(aValores[1]));
                            break;
                        }

                        break;
                    }
                }

                Conexion.CommitTransaccion(tr);
                sResul = sElementosInsertados;
            }
            catch (Exception ex)
            {
                Conexion.CerrarTransaccion(tr);
                if (Errores.EsErrorIntegridad(ex) && sAccion == "D")
                {
                    throw new Exception("ErrorControlado##EC##No se puede eliminar el area de conocimiento \"" + sDenominacionDelete + "\" por tener elementos relacionados.");
                }
                else
                {
                    throw ex;
                }
            }

            finally
            {
                Conexion.Cerrar(oConn);
            }

            return(sResul);
        }
コード例 #9
0
        public static string Grabar(string strDatos)
        {
            string sDenominacionDelete = "";
            string sAccion             = "";

            #region Inicio Transacción

            SqlConnection  oConn;
            SqlTransaction tr;
            try
            {
                oConn = Conexion.Abrir();
                tr    = Conexion.AbrirTransaccion(oConn);
            }
            catch (Exception ex)
            {
                throw (new Exception("Error al abrir la conexion", ex));
            }

            #endregion

            try
            {
                int      nAux = 0;
                string   sElementosInsertados = "";
                string   sResul  = "";
                string[] aIdioma = Regex.Split(strDatos, "@fila@");
                foreach (string sIdioma in aIdioma)
                {
                    string [] aDatosIdioma = Regex.Split(sIdioma, "@dato@");
                    sAccion             = aDatosIdioma[0];
                    sDenominacionDelete = "";
                    switch (aDatosIdioma[0])
                    {
                    case "I":
                        nAux = DAL.Idioma.Insert(tr, aDatosIdioma[2]);
                        if (sElementosInsertados == "")
                        {
                            sElementosInsertados = nAux.ToString();
                        }
                        else
                        {
                            sElementosInsertados += "//" + nAux.ToString();
                        }
                        break;

                    case "U":
                        DAL.Idioma.Update(tr, Convert.ToInt32(aDatosIdioma[1]), aDatosIdioma[2]);
                        break;

                    case "D":
                        sDenominacionDelete = aDatosIdioma[2];
                        DAL.Idioma.Delete(tr, Convert.ToInt32(aDatosIdioma[1]));
                        break;
                    }
                }

                Conexion.CommitTransaccion(tr);
                sResul = sElementosInsertados;
                return(sResul);
            }

            catch (Exception ex)
            {
                Conexion.CerrarTransaccion(tr);
                if (Errores.EsErrorIntegridad(ex) && sAccion == "D")
                {
                    throw new Exception("ErrorControlado##EC##No se puede eliminar el idioma \"" + sDenominacionDelete + "\" por tener elementos relacionados.");
                }
                else
                {
                    throw ex;
                }
            }
            finally
            {
                Conexion.Cerrar(oConn);
            }
        }
コード例 #10
0
        public static string Grabar(string strDatos)
        {
            string sDen    = "";
            string sAccion = "";

            #region Inicio Transacción

            SqlConnection  oConn;
            SqlTransaction tr;
            try
            {
                oConn = Conexion.Abrir();
                tr    = Conexion.AbrirTransaccion(oConn);
            }
            catch (Exception ex)
            {
                throw (new Exception("Error al abrir la conexion", ex));
            }

            #endregion

            try
            {
                #region Grabar
                short    nAux = 0;
                string   sElementosInsertados = "";
                string[] aTitulacion          = Regex.Split(strDatos, "@fila@");
                foreach (string sTitulacion in aTitulacion)
                {
                    if (sTitulacion != "")
                    {
                        string[] aDatosTitulacion = Regex.Split(sTitulacion, "@dato@");
                        sAccion = aDatosTitulacion[0];
                        sDen    = aDatosTitulacion[2].ToString();
                        switch (aDatosTitulacion[0])
                        {
                        case "I":
                            nAux = SUPER.BLL.Titulacion.Insertar(tr, aDatosTitulacion[2].ToString(),
                                                                 int.Parse(HttpContext.Current.Session["IDFICEPI_CVT_ACTUAL"].ToString()),
                                                                 (aDatosTitulacion[6] == "1") ? true : false,
                                                                 byte.Parse(aDatosTitulacion[3]),
                                                                 (aDatosTitulacion[4] == "") ? null : (byte?)byte.Parse(aDatosTitulacion[4]),
                                                                 (aDatosTitulacion[5] == "1") ? true : false);

                            if (sElementosInsertados == "")
                            {
                                sElementosInsertados = nAux.ToString();
                            }
                            else
                            {
                                sElementosInsertados += "//" + nAux.ToString();
                            }
                            break;

                        case "U":
                            DAL.Titulacion.Update(tr, int.Parse(aDatosTitulacion[1].ToString()), aDatosTitulacion[2].ToString(),
                                                  (aDatosTitulacion[6] == "1")?true:false,
                                                  int.Parse(HttpContext.Current.Session["IDFICEPI_CVT_ACTUAL"].ToString()),
                                                  byte.Parse(aDatosTitulacion[3]),
                                                  (aDatosTitulacion[4] == "") ? null : (byte?)byte.Parse(aDatosTitulacion[4]),
                                                  (aDatosTitulacion[5] == "1")?true:false, (aDatosTitulacion[7] == "1")?true:false);
                            break;

                        case "D":
                            //sDenominacionDelete = aDatosTitulacion[2];
                            DAL.Titulacion.Delete(tr, int.Parse(aDatosTitulacion[1].ToString()));
                            break;
                        }
                    }
                }

                Conexion.CommitTransaccion(tr);
                return("OK@#@" + sElementosInsertados);

                #endregion
            }
            catch (Exception ex)
            {
                Conexion.CerrarTransaccion(tr);
                if (Errores.EsErrorIntegridad(ex))
                {
                    if (sAccion == "D")
                    {
                        throw new Exception("ErrorControlado##EC##No se puede eliminar la titulación \"" + sDen + "\" por tener elementos relacionados.");
                    }
                    else
                    {
                        throw new Exception("ErrorControlado##EC##No se puede grabar la titulación \"" + sDen + "\" porque ya existe esa denominación.");
                    }
                }
                else
                {
                    throw ex;
                }
            }
            finally
            {
                Conexion.Cerrar(oConn);
            }
        }
コード例 #11
0
        public static string Grabar(string strDatos)
        {
            string sDenominacionDelete = "";
            string sAccion             = "";

            #region Inicio Transacción

            SqlConnection  oConn;
            SqlTransaction tr;
            try
            {
                oConn = Conexion.Abrir();
                tr    = Conexion.AbrirTransaccion(oConn);
            }
            catch (Exception ex)
            {
                throw (new Exception("Error al abrir la conexion", ex));
            }

            #endregion

            try
            {
                #region Grabar

                string   sIdPerfil = "";
                string[] aPerfil   = Regex.Split(strDatos, "@perfil@");
                foreach (string sPerfil in aPerfil)
                {
                    string[] aDatosPerfil = Regex.Split(sPerfil, "@dato@");
                    sAccion             = aDatosPerfil[0];
                    sDenominacionDelete = "";
                    switch (aDatosPerfil[0])
                    {
                    case "I":
                        //aDatosPerfil[1]-->IDPerfil
                        //aDatosPerfil[2]-->Descripcion
                        //aDatosPerfil[3]-->Abreviatura
                        //aDatosPerfil[4]-->RH
                        //aDatosPerfil[5]-->Nivel
                        sIdPerfil += DAL.PerfilExper.Insert(tr, aDatosPerfil[2].ToString(), aDatosPerfil[3].ToString(), (aDatosPerfil[4].ToString() == "true") ? byte.Parse("1") : byte.Parse("0"), int.Parse(aDatosPerfil[5])) + "//";
                        break;

                    case "U":
                        DAL.PerfilExper.Update(tr, int.Parse(aDatosPerfil[1].ToString()), aDatosPerfil[2].ToString(), aDatosPerfil[3].ToString(), (aDatosPerfil[4].ToString() == "true") ? byte.Parse("1") : byte.Parse("0"), int.Parse(aDatosPerfil[5]));
                        break;

                    case "D":
                        sDenominacionDelete = aDatosPerfil[2];
                        DAL.PerfilExper.Delete(tr, int.Parse(aDatosPerfil[1].ToString()));
                        break;
                    }
                }

                #endregion


                Conexion.CommitTransaccion(tr);
                return("OK@#@" + sIdPerfil);
            }
            catch (Exception ex)
            {
                Conexion.CerrarTransaccion(tr);
                if (Errores.EsErrorIntegridad(ex) && sAccion == "D")
                {
                    throw new Exception("ErrorControlado##EC##No se puede eliminar el perfil \"" + sDenominacionDelete + "\" por tener elementos relacionados.");
                }
                else
                {
                    throw ex;
                }
            }
            finally
            {
                Conexion.Cerrar(oConn);
            }
        }