none
sub-relatorio e passagem de parametros RRS feed

  • Pergunta

  • Bom dia!

    Estou com o seguinte problema: eu tenho um relatorio e dentro dele um subrelatorio até tudo ok. O problema comeca quando vou tentar passar os parametros para o subrelatorio. Já tentei passar paremetros de toda forma possivel mais não consigo.

    Eu preciso montar um relatorio assim :


    habilitacao          Classe    AP   BTC PF       Total de aulas não dadas

       Matematica        1A        12     12     12            Claro docente 12
                               1B        12     12     12            Outros            1
                               1C        12     12     12           Total              13

       Portugues          1A        12     12     45            Claro docente 12
                               1B        34     14     12            Outros            1
                               1C        12     12     12           Total              13


    Aonde Claro Docente e outros são dados do sub-relatorio ... perceba que como esta o relatorio hoje ele esta trazendo sempre os mesmos valores do subrelatorio.

    Abaixo segue meu codigo que explica melhor o meu caso :
        private DataTable CarregarPontoMensalNaoAtribuido()
    {
    string stringconn = Convert.ToString(ConfigurationManager.ConnectionStrings["StringConMySql"]);
    MySqlConnection cb = new MySqlConnection(stringconn);
    DataTable Dt = new DataTable();

    try
    {

    cb.Open();
    MySqlCommand cmd = new MySqlCommand();
    cmd.Connection = cb;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = " SELECT motivonaoatribuicao.Descricao,"
    + " sum(pontomensalnaoatribuido.QntdAulas) as QntdAulas ,pontomensalnaoatribuido.motivonaoatribuicao,"
    + " pm.habilitacao,pm.sequencia"
    + " FROM pontomensal pm, pontomensalnaoatribuido INNER JOIN"
    + " motivonaoatribuicao ON pontomensalnaoatribuido.MotivoNaoAtribuicao = motivonaoatribuicao.MotivoNaoAtribuicao"
    + " where pontomensalnaoatribuido.PontoMensal = pm.pontomensal"
    + " and pm.sequencia = ?sequencia"
    + " and pm.habilitacao = ?habilitacao"
    + " group by pontomensalnaoatribuido.motivonaoatribuicao";
    cmd.Parameters.Add("?sequencia", MySqlDbType.Int16).Value = Session["sequencia"];
    cmd.Parameters.Add("?habilitacao", MySqlDbType.Int16).Value = Session["cod_habilitacao"];
    MySqlDataReader dr = cmd.ExecuteReader();
    Dt.Load(dr);
    cb.Close();

    }
    catch (Exception ex)
    {
    System.Diagnostics.Debug.WriteLine(ex.Message);
    string erro = ex.Message;
    }
    finally
    {
    // liberando os objetos
    cb.Dispose();
    cb = null;
    }
    // retornando o datable com os dados do sub-relatorio
    return Dt;
    }

    private void SubRelatorioPontoMensalNaoAtribuido(object sender, SubreportProcessingEventArgs e)
    {
    if ((Dt == null))
    {
    Dt = CarregarPontoMensalNaoAtribuido();
    }
    e.DataSources.Add(new ReportDataSource("MotivoAulasND", Dt));
    }
    private void ListaPontoMensalCAPD()
    {

    string stringconn = Convert.ToString(ConfigurationManager.ConnectionStrings["StringConMySql"]);
    MySqlConnection _cb = new MySqlConnection(stringconn);

    DataTable _Dt = new DataTable();
    MySqlCommand _cmd = new MySqlCommand();
    _cb.Open();
    ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/App_Relatorios/AnexoIV_Novo.rdlc");

    _cmd.Connection = _cb;
    _cmd.CommandType = CommandType.Text;
    _cmd.CommandText = " SELECT"
    + " sum(pontomensal.AP) as AP,"
    + " sum(pontomensal.APDCT) as APDCT,"
    + " sum(pontomensal.AD) as AD,"
    + " sum(pontomensal.BTC) as BTC,"
    + " pontomensal.PontoMensal,"
    + " pontomensal.Sequencia,"
    + " sum(pontomensal.REPSUB) as REPSUB,"
    + " sum(pontomensal.AP + pontomensal.APDCT - pontomensal.AD) AS andreal,"
    + " pontomensal.Semestre,"
    + " pontomensal.Habilitacao AS cod_habilitacao,"
    + " etec.Nome,"
    + " etec.etec,"
    + " etec.cidade,"
    + " classe.Turma,"
    + " periodo.descricao as periodo,"
    + " habilitacao.Descricao AS habilitacao,"
    + " sum(pontomensal.ap)+sum(pontomensal.apdct)-sum(pontomensal.ad)-sum(pontomensal.repsub) AS faltarepor "
    + " FROM pontomensal"
    + " LEFT JOIN etec ON pontomensal.Sequencia = etec.sequencia"
    + " LEFT JOIN classe ON pontomensal.Classe = classe.Classe"
    + " LEFT JOIN habilitacao ON pontomensal.Habilitacao = habilitacao.Habilitacao"
    + " LEFT JOIN periodo ON classe.periodo = periodo.periodo"
    + " where pontomensal.sequencia = ?sequencia"
    + " and pontomensal.Semestre = ?semestre"
    + " GROUP BY habilitacao,turma"
    + " order by habilitacao";


    _cmd.Parameters.Add("?sequencia", MySqlDbType.Int16).Value = Session["sequencia"];
    _cmd.Parameters.Add("?semestre", MySqlDbType.Int16).Value = Session["semestre"];
    _cmd.ExecuteNonQuery();
    MySqlDataReader _dr = _cmd.ExecuteReader();

    _dr.Read();
    Session["cod_habilitacao"] = _dr["cod_habilitacao"].ToString();

    _Dt.Load(_dr);
    ReportDataSource _RDs = new ReportDataSource("AnexoIX_CAPD", _Dt);
    ReportViewer1.LocalReport.DataSources.Add(_RDs);
    _cb.Close();



    }

    }

    O maior problema esta em passar o parametro habilitação que em todo grupo do relatorio é diferente.

    Alguem tem alguma dica de como posso fazer isso?

    Obrigado
    segunda-feira, 14 de dezembro de 2009 11:35

Respostas

  • Pessoal eu consegui resolver este problema ... ao enves de passar os parametros no select :

          cmd.Parameters.Add("?sequencia"
    , MySqlDbType.Int16).Value = Session["sequencia"
    ];
    cmd.Parameters.Add("?habilitacao" , MySqlDbType.Int16).Value = Session["cod_habilitacao" ];
    Eu passei os relatorios no proprio relatório. Funcionou !!!



    Obrigado a todos.
    Danilo Molina
    • Marcado como Resposta Danilo.M.Molina quinta-feira, 17 de dezembro de 2009 10:02
    quinta-feira, 17 de dezembro de 2009 10:02