// inicializa uma estrutura com todas as médias por grupo por competência.
        // passado
        private void initMediasCompetencias()
        {
            String OsGrupos="";
            String TempTable="";

            mediasCompetencias = new List<MediasCompetencia>();
            mediasCompetenciasSorted = new SortedList<int, MediasCompetencia>();

            SqlConnection conn = new SqlConnection(DBHelper.ConnectionString);
            SqlCommand command = new SqlCommand();
            command.Connection = conn;
            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = "Rep_v2_Media_Competencias";
            command.Parameters.AddWithValue("avaliadoID", _pessoaID);
            command.Parameters.AddWithValue("projectoID", _Projecto.ProjectoID);

            foreach (String s in _Projecto.GroupsCodes)
            {
                OsGrupos += s + ",";
                TempTable += String.Format("[{0}] float,", s);
            }

            OsGrupos = OsGrupos + "T";
            TempTable += "[T] float";

            command.Parameters.AddWithValue("grupos", OsGrupos);
            command.Parameters.AddWithValue("TempTable", TempTable);
            command.Parameters.AddWithValue("qualidadeSelf", _Projecto.GroupsCodes[0]);

            SqlDataAdapter da = new SqlDataAdapter(command);
            DataSet ds = new DataSet();

            conn.Open();
            da.Fill(ds);
            conn.Close();

            MediasCompetencia medias;
            float[] valores = new float[ReportGroupCodes.Length]; // o +1 é porcausa do total

            int compID;

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                compID = Convert.ToInt32(dr["compID"]);

                for (int i = 0; i < ReportGroupCodes.Length; i++)
                {
                    valores[i] = Convert.IsDBNull(dr[ReportGroupCodes[i]]) ? 0 : (float)Convert.ToDouble(dr[ReportGroupCodes[i]]);
                }

                medias = new MediasCompetencia(compID, valores, ReportGroupCodes, ReportGroupDescriptions);

                mediasCompetenciasSorted.Add(compID, medias);
                mediasCompetencias.Add(medias);
            }
        }
    private void initMediasDerailerOne2One()
    {
        mediasDerailers = new List<MediasCompetencia>();
        mediasDerailersSorted = new SortedList<int, MediasCompetencia>();

        SqlConnection conn = new SqlConnection(DBHelper.ConnectionString);
        SqlCommand command = new SqlCommand();
        command.Connection = conn;
        command.CommandType = CommandType.StoredProcedure;
        command.CommandText = "Rep_v2_Media_DerailersOne2One";
        command.Parameters.AddWithValue("avaliadoID", _avaliado.PessoaID);
        command.Parameters.AddWithValue("projectoID", _Projecto.ProjectoID);
        command.Parameters.AddWithValue("proprioID", _proprio.PessoaID);

        SqlDataAdapter da = new SqlDataAdapter(command);
        DataSet ds = new DataSet();

        conn.Open();
        da.Fill(ds);
        conn.Close();

        MediasCompetencia medias;
        float P, B, S, O, C, T;
        int compID;

        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            compID = Convert.ToInt32(dr["compID"]);
            B = Convert.IsDBNull(dr["B"]) ? 0 : (float)Convert.ToDouble(dr["B"]);
            P = Convert.IsDBNull(dr["P"]) ? 0 : (float)Convert.ToDouble(dr["P"]);
            C = Convert.IsDBNull(dr["C"]) ? 0 : (float)Convert.ToDouble(dr["C"]);
            O = Convert.IsDBNull(dr["O"]) ? 0 : (float)Convert.ToDouble(dr["O"]);
            S = Convert.IsDBNull(dr["S"]) ? 0 : (float)Convert.ToDouble(dr["S"]);
            T = Convert.IsDBNull(dr["T"]) ? 0 : (float)Convert.ToDouble(dr["T"]);

            medias = new MediasCompetencia(compID, S, B, P, C, O, T);

            mediasDerailersSorted.Add(compID, medias);
            mediasDerailers.Add(medias);
        }
    }