水晶报表-学习笔记

因为要用到动态报表,所以首先学习了水晶报表。但是对动态报表的实现还是很模糊,请大家指教!小女子在此谢过!

=======================================================================

1、简介:

  水晶报表主要用于设计及产生报表;是业内最专业、功能最强大的报表系统,除了强大的报表功能外,最大的又是是实现了与绝大多数流行开发工具的集成和接口。

2、功能:

  Crystal Report几乎可以从任何数据源生成所需要的报表,内置的报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,解释可能被隐藏掉的重要关系。

3、支持的数据源:

  ->数据库格式

  ->数据表,如Excel

  ->文本文件

  ->HTML XML文件等

  ->通过网络五福ODBC、JDBC等可访问的任意数据源

4、使用:

  在VS2005--VS2010中都有自带的水晶报表,但是如果需要使用功能更加强大的版本就需要购买了。

  首先,新建报表文件,后缀名为.rpt,可以根据向导来新建,其中最常用的是标准表和交叉表,然后根据向导创建连接,成功连接数据库之后,数据库中的表、存储过程等信息都显示出来了,根据需要选择要显示的字段(在设计阶段还可以进行选择),这种模式为拉模式,与之对应的是推模式,后面会了解到。

  生成报表之后,进入到报表设计器:

  Section1(报表头)

    在第一页的最上面显示一次,如果不需要显示,通过右键->抑制显示;

  Section2(页眉)

    绑定之后数据库中的字段会显示在页眉中;

  Section3(详细资料)

    绑定数据之后,数据会显示在详细资料中;

  Section(报表页脚)

    顾名思义的页脚,不过内容是自定义显示;

  Section(页脚)

    自动显示页码。

 

  组:

    按照依据对数据的显示进行分组;

  公式:

    自定义公式,对各列数据计算之后显示;可以在公式工作室中选择要显示的数据,但是不推荐这样做,最好是在选择数据表的时候进行筛选(推模式)

  也可以对已经生成好的报表直接进行导出,格式可以为word,excel,pdf等等。

  图表:  

  

  

报表设计好之后,尝试在web页面中显示:

  需要两个控件:CrystalReportSource:报表源,用来绑定报表文件;

         CrystalReportViewer:用来绑定上面的报表源。

  在Viewer的选项中设定各种格式,有打印、导出等设置

这个时候出现一个问题:目前我的数据库是没有密码的,如果使用的SQL验证方式呢?

  先把数据库改为SQL Server身份验证,在VS2008下做一下测试,会发现直接是数据库的登录界面,在VS2005下却很正常。

  这时在VS2008下可以把数据库的登录名和密码保存在报表模板中,或者放在web.config文件中。

  但是在VS2005里面,却怎么改登录模式都能显示报表数据,好像能够智能识别一样,闷…

 

手动绑定数据的方式:

  首先创建一个报表文档,相当于CrystalReportSource,然后使用.Load方式加载报表文件

  

            ReportDocument rptDoc = new ReportDocument();
            rptDoc.Load(Server.MapPath("CrystalReport.rpt"));
            //另外一种方式:
            //CrystalReport rptDoc = new CrystalReport();在05下不能使用
            TableLogOnInfo logInfo = new TableLogOnInfo();
            logInfo.ConnectionInfo.ServerName = ".";
            logInfo.ConnectionInfo.UserID = "sa";
            logInfo.ConnectionInfo.Password = "123456";
            logInfo.ConnectionInfo.DatabaseName = "northwind";
            for (int i = 0; i < rptDoc.Database.Tables.Count; i++)
            {
                  rptDoc.Database.Tables[i].ApplyLogOnInfo(logInfo);
            }

            //将CrystalReportViewer绑定一下
            CrystalReportViewer1.ReportSource = rptDoc;

 

=======================

水晶报表的两种模式:

  拉模式(pull)

    这种模式是在创建报表时根据选定的表或者存储过程来进行数据绑定;浏览数据的时候,报表文件根据新建报表时选中的表或者存储过程自动查询数据。既然是程序主动索要数据,那么如果数据库存在登录名和密码的话,就需要一种写死的登录信息。通过验证之后报表文件会主动去数据库取数据,所以在page_load中要先把书库路的登录信息提交过来。

  推模式(push)

    推模式就是通过用户提交的查询信息,来查找数据库,强类型的DataSet需要用到视图。就是报表模板已经设计好,在使用的时候根据需求对数据进行筛选。可以使用DataSet(强类型或者弱类型)。
            
    ->在数据库专家中选择表或者存储过程等设置报表就是拉模式,使用添加命令就是推模式的一种。

        因为即使选择要显示的表,程序还是查找出所有的数据信息,如果需要筛选信息,添加了条件之后 还是要首先查找出来所有的数据,找到的信息是固定的。比如强类型的DataSet,通过添加数据集来绑定数据库中的数据。

 

总结:

  1.Pull(拉模式),直连数据库,但要注意连接参数的设置 优点: 方便,快捷 缺点:灵活性太差,适用面窄

      2.Push(推模式),该模式允许程序员通过组装在内存中的表来封装数据 当然就更加灵活,丰富多样

优点:

   1.适合快速开发,能很方便的出各种饼图,柱图,等

        2.方便 灵活的导出功能,兼容大多数文件格式

        3. 多钟语言的支持

        4.可以直接访问各种数据源    

缺点:
        1.执行效率太慢


        2.不支持png图片透明(我的这个应用也还是有这个问题,因为是电子签名的)

        3.无源码

posted @ 2012-05-21 15:35  王小萌  阅读(683)  评论(0编辑  收藏  举报