private string ObtenerIntegrantes(int nIdPE, string sCodCR, string sVista)
    {
        StringBuilder sb = new StringBuilder();
        DateTime      dt;
        string        sDias = "";//, sFecha="";
        int           idProfAnt = -1, idProfAct = -1;
        int           iMesAnt = -1, iMesAct = -1;

        try
        {
            SqlDataReader dr = PROYECTOSUBNODO.Vacaciones(nIdPE, sVista);
            if (sVista == "P")
            {
                #region ordenación por profesional
                sb.Append("<table id='tblOpciones2' class='texto MANO' style='width: 855px;'>");
                sb.Append("<colgroup><col style='width:20px;' /><col style='width:60px;' /><col style='width:100px;' /><col style='width:675px;' /></colgroup>");
                while (dr.Read())
                {
                    idProfAct = int.Parse(dr["t314_idusuario"].ToString());
                    //dt = getFecha(dr["t187_fechavacacion"].ToString());
                    dt      = DateTime.Parse(dr["t187_fechavacacion"].ToString());
                    iMesAct = (dt.Year * 100) + dt.Month;

                    if (idProfAnt != idProfAct)
                    {
                        if (sDias != "")//Pongo el último mes del profesional anterior
                        {
                            sb.Append(PonerMes(iMesAnt, sDias));
                        }
                        sDias = dt.Day.ToString() + ", ";
                        sb.Append(PonerProfesional(dr, sCodCR));
                        iMesAnt = iMesAct;
                    }
                    else
                    {
                        if (iMesAnt != iMesAct)
                        {
                            sb.Append(PonerMes(iMesAnt, sDias));
                            sDias = dt.Day.ToString() + ", ";
                        }
                        else
                        {
                            sDias += dt.Day.ToString() + ", ";
                        }
                    }
                    iMesAnt   = iMesAct;
                    idProfAnt = idProfAct;
                }
                if (sDias != "")
                {
                    sb.Append(PonerMes(iMesAct, sDias));
                }
                #endregion
            }
            else
            {
                #region ordenación por mes
                string sUserAnt = "", sSexoAnt = "", sNodoAnt = "", sProfAnt = "";
                string sUserAct = "", sSexoAct = "", sNodoAct = "", sProfAct = "";
                sb.Append("<table id='tblOpciones2' class='texto MANO' style='width: 855px;'>");
                sb.Append("<colgroup><col style='width:60px' /><col style='width:20px;' /><col style='width:300px;' /><col style='width:475px;' /></colgroup>");
                while (dr.Read())
                {
                    idProfAct = int.Parse(dr["t314_idusuario"].ToString());
                    //dt = getFecha(dr["t187_fechavacacion"].ToString());
                    dt       = DateTime.Parse(dr["t187_fechavacacion"].ToString());
                    iMesAct  = (dt.Year * 100) + dt.Month;
                    sUserAct = dr["t314_idusuario"].ToString();
                    sSexoAct = dr["t001_sexo"].ToString();
                    sNodoAct = dr["t303_idnodo"].ToString();
                    sProfAct = dr["Profesional"].ToString();

                    if (iMesAnt != iMesAct)
                    {
                        if (sDias != "")//Pongo el último mes del profesional anterior
                        {
                            sb.Append(PonerProfesional2(sUserAnt, sSexoAnt, sNodoAnt, sProfAnt, sCodCR, sDias));
                        }
                        sDias = "";
                        sb.Append(PonerMes2(iMesAct));
                    }
                    else
                    {
                        if (idProfAnt != idProfAct)
                        {
                            sb.Append(PonerProfesional2(sUserAnt, sSexoAnt, sNodoAnt, sProfAnt, sCodCR, sDias));
                            sDias = "";
                        }
                    }
                    sDias += dt.Day.ToString() + ", ";

                    sUserAnt  = sUserAct;
                    sSexoAnt  = sSexoAct;
                    sNodoAnt  = sNodoAct;
                    sProfAnt  = sProfAct;
                    iMesAnt   = iMesAct;
                    idProfAnt = idProfAct;
                }
                sb.Append(PonerProfesional2(sUserAct, sSexoAct, sNodoAct, sProfAct, sCodCR, sDias));
                #endregion
            }
            sb.Append("</table>");
            dr.Close();
            dr.Dispose();
            strTablaHTMLIntegrantes = sb.ToString();
            return("OK@#@" + sb.ToString());
        }
        catch (Exception e)
        {
            //Master.sErrores = Errores.mostrarError("Error al obtener las personas", ex);
            return("error@#@" + e.Message);
        }
    }