水晶报表内功心法PUSH模式样板招式.docx
- 文档编号:24419926
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:10
- 大小:238.57KB
水晶报表内功心法PUSH模式样板招式.docx
《水晶报表内功心法PUSH模式样板招式.docx》由会员分享,可在线阅读,更多相关《水晶报表内功心法PUSH模式样板招式.docx(10页珍藏版)》请在冰豆网上搜索。
水晶报表内功心法PUSH模式样板招式
索引
.【水晶报表内功心法】--序言
.【水晶报表内功心法】--推拉之间
.【水晶报表内功心法】--PULL模式样板招式
============================================================
前篇讲解了PULL模式下的操作方法,比较简单。
本文进一步详细讲解一下PUSH模式下的样板操作。
仍以Web为例
新建一个Asp.NetCrystalReports的网站
弹出下面这个界面后,选第2项-作为空白报表,然后点确认,进入一个空白界面。
新建一个数据集合
出现此提示时,点“是”
然后还会出来连接数据库的提示,一律点否,直至界面上什么提示也没有
在这个界面上,点右键,添加一个datatable,命名为myTable。
然后在myTable里增加相应的列,我这里有3个列,注意要设置好类型。
特别说明:
因为水晶报表里不认datatime型,对于2009-06-269:
23:
15
会自动截断为2009-06-26
所以datatime型数据在xsd文件中,可设置为string型
而代码中的SQL中可把字段转换为String传入。
xsd设计完毕后,开始进入报表模板设计阶段。
在“数据库字段”上点右键,选“数据库专家”
再弹出的界面上,点“项目数据”,依次点开,找到我们刚才自己做的mytable
确定后,在“数据库专家”下面会出现表名mytable,点开后会看到字段,
把字段拖到模板上的详细资料节即完成基础模板的制作了
点一下预览,会看到虽然我们还没有任何实际的数据操作,但是界面上已经有数据了
这是水晶报表的一个虚拟数据,可以看到一个最终显示的效果。
好了,上代码
C#code
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingCrystalDecisions.Shared;
usingCrystalDecisions.CrystalReports.Engine;
usingCrystalDecisions.Web;
usingSystem.Data.OleDb;
publicpartialclass_Default:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
ConfigureCrystalReports();
}
privatevoidConfigureCrystalReports()
{
//连接字串
Stringconnstr=@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=E:
\CrZen\testall.mdb;";
OleDbDataAdapterda=newOleDbDataAdapter();
OleDbConnectioncn=newOleDbConnection(connstr);
//
da=newOleDbDataAdapter("SELECT*FromRPT_CR_TEST1",cn);
//创建我们的DataSet1实例
DataSet1dt1=newDataSet1();
//填充dt1
//注意:
表名mytable必须与我们在xsd设计的表名称一致。
//本例中数据库的表实际名称为RPT_CR_TEST1,而最终是以mytable为准的
//使用PUSH模式的优点就在此,可以自由组合SQL
//前提是表名称和字段名(需要在SQL中使用as别名的方式跟xsd中设计的字段名一致)都要一致
da.Fill(dt1,"mytable");
ReportDocumentmyReport=newReportDocument();
stringreportPath=Server.MapPath("crystalreport1.rpt");
myReport.Load(reportPath);
//绑定数据集,注意,一个报表用一个数据集。
myReport.SetDataSource(dt1);
CrystalReportViewer1.ReportSource=myReport;
}
}
然后运行就可以了。
这里做一下说明,在【推拉之间】没有说这个xsd,是因为当时没讲到细节操作。
说了很难理解。
这个xsd,是我们自己构造的,做个比喻吧:
就是xsd比作个一个架子,它负责把水晶报表撑起来,但是是空的,没有内容
我们用PUSH模式,把数据塞给它,把架子塞满,这样水晶报表也就能呈现出效果来
常见问题:
1:
报表可以显示出来,但是没数据,
一般有以下几种情况
a:
表中确实没数据
b:
da.Fill(dt1,"mytable");表名称与xsd中设计的表不一致
c:
如果你用了多个表,可能是因为表默认的关联关系导致无数据
2:
出现下面这个图的提示,特别是翻页、打印、导出的时候,因为这些动作都需要重新连接数据库源。
a:
如果是多表的话,可能是部分表没有赋值。
水晶报表需要对用到的每个表进行验证,即使没数据。
没有的话,传个空的记录集也行。
b:
代码没有放到Page_Load或Page_init里,或者是放到了,但是控制了postback。
因为http是无状态的,如果控制了postback,水晶报表就丢失了前面的设置,会导致出现此情况的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 水晶 报表 内功 心法 PUSH 模式 样板 招式
![提示](https://static.bdocx.com/images/bang_tan.gif)