none
Relatorio não exibe muito registros! RRS feed

  • Pergunta

  • Eu tenho um relatorio feito em reporting viewer 9.0 do visual studio 2008. Neste relatorio tenho um componente list e também tennho um sub-relatorio dentro do list. Quando mando exibir o relatorio com mais ou menos uns 20 registros ele funciona ok , mais quando tento abrir o relatorio com uns 200 registros ele simplesmente não abre e trava , fica processando mais nunca abre o relatorio.

    segue o codigo para carregar o relatorio.
    public partial class Cadastros_Teste : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ListaPontoMensalCAPD();
            ReportViewer1.LocalReport.SubreportProcessing += SubRelatorioPrecoProduto;
            ReportViewer1.LocalReport.Refresh();
        }
        private DataTable CarregarPrecoProdutoHistorico()
        {
            string stringconn = Convert.ToString(ConfigurationManager.ConnectionStrings["StringConMySql"]);
            MySqlConnection cb = new MySqlConnection(stringconn);
            DataTable Dt = new DataTable();
            MySqlCommand cmd = new MySqlCommand();
            cb.Open();
    
            try
            {
    
                cmd.Connection = cb;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = " SELECT motivonaoatribuicao.Descricao, pontomensalnaoatribuido.PontoMensal, pontomensalnaoatribuido.QntdAulas"
                                   + " FROM pontomensalnaoatribuido INNER JOIN"
                                   + " motivonaoatribuicao ON pontomensalnaoatribuido.MotivoNaoAtribuicao = motivonaoatribuicao.MotivoNaoAtribuicao";
                MySqlDataReader dr = cmd.ExecuteReader();
                Dt.Load(dr);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }
            finally
            {
                // liberando os objetos 
                cb.Dispose();
                cb = null;
            }
            // retornando o datable com os dados do sub-relatorio
            return Dt;
        }
    
        private void SubRelatorioPrecoProduto(object sender, SubreportProcessingEventArgs e)
        {
            DataTable Dt;
            Dt = null;
    
            if ((Dt == null))
            {
                Dt = CarregarPrecoProdutoHistorico();
            }
            e.DataSources.Add(new ReportDataSource("MotivoAulasNaoDadas", 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/Teste.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();
    
            _Dt.Load(_dr);
    
            ReportDataSource _RDs = new ReportDataSource("AnexoIX_CAPD", _Dt);
            ReportViewer1.LocalReport.DataSources.Add(_RDs);
            _cb.Close();
    
            //**********************************************************************************************************
            DataTable _DtU = new DataTable();
            MySqlCommand _cmdU = new MySqlCommand();
            _cb.Open();
            ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/App_Relatorios/Teste.rdlc");
    
            _cmdU.Connection = _cb;
            _cmdU.CommandType = CommandType.Text;
            _cmdU.CommandText = "SELECT responsavel FROM usuarios where sequencia = ?sequencia ";
    
            _cmdU.Parameters.Add("?sequencia", MySqlDbType.Int16).Value = Session["sequencia"];
            _cmdU.ExecuteNonQuery();
            MySqlDataReader _drU = _cmdU.ExecuteReader();
    
            _DtU.Load(_drU);
            ReportDataSource _RDsU = new ReportDataSource("usuarios", _DtU);
            ReportViewer1.LocalReport.DataSources.Add(_RDsU);
            _cb.Close();
    
    
           }
    
    }
    
    Alguem sabe me dizer o que esta acontecendo?
    Danilo Molina
    terça-feira, 3 de novembro de 2009 19:53

Respostas

  • Olá

    No metodo SubRelatorioPrecoProduto , está carregando os dados SEMPRE que entra ali, porque seu DataTable, a cada entrada no metodo, estara como null:

    DataTable dt;
    dt = null;

    if (dt == null) // <---- SEMPRE VERDADEIRO

    Declare e inicialize o DataTable como um atributo DA CLASSE, ou seja, fora de qqualquer método:

    DataTable dt = null;

    []s
    Robson Castilho - MCTS .Net 2.0 Windows/Web Applications [Se o post foi útil, não esqueça de marcá-lo. Obrigado]
    • Marcado como Resposta Danilo.M.Molina quinta-feira, 5 de novembro de 2009 11:27
    quinta-feira, 5 de novembro de 2009 02:34

Todas as Respostas

  • Será que isso que esta acontecendo é uma limitação do Reporting Viewer ? Alguem me aconselha a usar o Crystal Reporting ? Ou será que é o meu codigo mesmo que esta com erro ?


    Obrigado.

    Danilo Molina
    quarta-feira, 4 de novembro de 2009 09:43
  • Olá

    No metodo SubRelatorioPrecoProduto , está carregando os dados SEMPRE que entra ali, porque seu DataTable, a cada entrada no metodo, estara como null:

    DataTable dt;
    dt = null;

    if (dt == null) // <---- SEMPRE VERDADEIRO

    Declare e inicialize o DataTable como um atributo DA CLASSE, ou seja, fora de qqualquer método:

    DataTable dt = null;

    []s
    Robson Castilho - MCTS .Net 2.0 Windows/Web Applications [Se o post foi útil, não esqueça de marcá-lo. Obrigado]
    • Marcado como Resposta Danilo.M.Molina quinta-feira, 5 de novembro de 2009 11:27
    quinta-feira, 5 de novembro de 2009 02:34
  • Robson muito obrigado cara .... resolveu meu problema ! Era isto mesmo.


    Agradeço a atenção!

    Danilo Molina
    quinta-feira, 5 de novembro de 2009 11:26
  • Disponha!
    Robson Castilho - MCTS .Net 2.0 Windows/Web Applications [Se o post foi útil, não esqueça de marcá-lo. Obrigado]
    quinta-feira, 5 de novembro de 2009 22:10