日期:2014-05-20  浏览次数:20695 次

【水晶报表内功心法】--PUSH模式样板招式
本帖最后由 babyt 于 2010-03-26 09:42:42 编辑
索引 

.【水晶报表内功心法】--序言 
.【水晶报表内功心法】--推拉之间
.【水晶报表内功心法】--PULL模式样板招式
============================================================ 
前篇讲解了PULL模式下的操作方法,比较简单。
本文进一步详细讲解一下PUSH模式下的样板操作。
仍以Web为例

新建一个 Asp.Net CrystalReports的网站 

弹出下面这个界面后,选第2项-作为空白报表,然后点确认,进入一个空白界面。

新建一个数据集合


出现此提示时,点“是”


然后还会出来连接数据库的提示,一律点否,直至界面上什么提示也没有
在这个界面上,点右键,添加一个datatable,命名为myTable。


然后在myTable里增加相应的列,我这里有3个列,注意要设置好类型。




特别说明:
因为水晶报表里不认datatime型,对于2009-06-26 9:23:15
会自动截断为2009-06-26
所以datatime型数据在xsd文件中,可设置为string型
而代码中的SQL中可把字段转换为String传入。


xsd设计完毕后,开始进入报表模板设计阶段。

在“数据库字段”上点右键,选“数据库专家”


再弹出的界面上,点“项目数据”,依次点开,找到我们刚才自己做的mytable


确定后,在“数据库专家”下面会出现表名mytable,点开后会看到字段,
把字段拖到模板上的详细资料节即完成基础模板的制作了


点一下预览,会看到虽然我们还没有任何实际的数据操作,但是界面上已经有数据了
这是水晶报表的一个虚拟数据,可以看到一个最终显示的效果。


好了,上代码

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Web;
using System.Data.OleDb;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ConfigureCrystalReports();

    }

    private void ConfigureCrystalReports()

    {
       
        //连接字串
        String connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\CrZen\testall.mdb;";
        OleDbDataAdapter da = new OleDbDataAdapter();
        OleDbConnection cn = new OleDbConnection(connstr);
        //
        da = new OleDbDataAdapter("SELECT * From RPT_CR_TEST1", cn);
        //创建我们的DataSet1实例
        DataSet1 dt1 = new DataSet1();
        //填充dt1
        //注意:表名mytable必须与我们在xsd设计的表名称一致。
        //本例中数据库的表实际名称为RPT_CR_TEST1,而最终是以mytable为准的
        //使用 PUSH模式的优点就在此,可以自由组合SQL
        //前提是表名称和字段名(需要在SQL中使用as别名的方式跟xsd中设计的字段名一致)都要一致