CrystalReports for .net (vs2005,web) 问题总结
1、使用水晶报表的简要步骤:
(1)添加新项-->数据集-->在dataTable中添加列,使强类型数据集的架构与你的数据dataset架构相同。生成所在项目,这个是必须的,否则后面不能显示出DataSet。
(2)添加新项-->水晶报表(.rpt)-->标准向导-->项目数据中-->ADO.net数据集-->展开,看见你刚创建的强类型数据集或表(DataTable),添加表,添加显示字段,(筛选字段等条件依情况添加)下一步,下一步,ok.(如果这里没有添加显示字段,就在报表设计器--crystalReportDesigner中,右键属性,字段资源管理器,拖进详细资料里面)
(3)建一个新页面(.aspx),工具箱拖进来查看器控件(CrystalReportViewer),页面代码添加对报表引擎的引用:using CrystalDecisions.CrystalReports.Engine;页面代码如下:
ReportDocument doc = new ReportDocument();//不建议用CrystalReportSource的ReportDocument属性,后面说原因
doc.Load(Server.MapPath("CrystalReportSource/CrystalReport1.rpt"));//你建的水晶报表虚拟路径
DataTable dt=new 强类型Table;//获取数据源
doc.SetDataSource(dt);
viewer.ReportSource = doc;
viewer.DataBind();
(4)基本搞定,生成,运行,如果看到每页显示的数据比较少,可以在设计器中,详细资料那一节的距离拉小,距离越小,每页显示的数据越多,也不是无限多下去,页面有限,详细资料的距离也有最小值(也就是说,拖到一定程度就不能拖了)
往往我们需要的报表不是那么简单的,在使用的过程中,有这样或那样的问题,一个一个的解决,上帝不会把一个我解决不了的问题摆在我面前。
1、刚调试两天,就出现“已达到系统管理员配置的最大报表处理作业数限制的处理”黄页,加载水晶报表出错 实际上,C:\WINDOWS\Temp目录下,生成了很多很多临时文件,一天就要好几百个,电脑不重启,这些临时文件就会越堆越多,导致上述错误,也有人说是并发访问的错误,在Web中出现的情况较多,winform不会出现该状况。有两种解决方法:
方法一:修改下面两个键的值。
HKEY_LOCAL_MACHINE;SOFTWARE;Crystal Decisions;10.0;Report Application
Server;InprocServer;PrintJobLimit 修改为1000
还有一个HKEY_LOCAL_MACHINE;SOFTWARE;Crystal Decisions;10.0;Report Application
Server;Server;PrintJobLimit 也修改为1000 (这个方法我不推荐,也没试过,因为我做的web页面要放到server上,难道server上也要改吗?这不是问题的根源,看下面)
方法二:在页面加一段代码:
protected void Page_UnLoad(object sender, EventArgs e)
{
if (doc != null)//doc 就是创建的reportDocument实例
{
doc.Dispose();//防止查看水晶报表时,在C:\WINDOWS\Temp下产生很多临时文件
}
}
搞定,问题解决了!
2、除去水晶报表的logo
crystalReportViewer的属性-->HasCrystalLogo=false;
3、不让报表自动分页,也就是不分页
crystalReportViewer的属性-->seperatePages=false;
4、详细资料节和页眉节通通隐藏不显示,但是所在页为空白页,仍然显示 设计器-->详细资料-->右键-->抑制显示(无向下钻取),光这个还不够,反正我都弄了才好使的
右键-->节专家-->详细资料-->抑制显示空白节(打钩)、保持在一起(不打勾)、在后面页新建页(不打勾)
具体每个属性什么意思,可以深入研究一下