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