Crystal Reports中的数据访问

大部分报表的数据都来自于数据库,所以Crystal Reports 与数据库的连接就成为一个关键的知识点了。
Crystal Reports for Visual Studio 中,提供了六种连接数据的方式,分别为DAO ADO.NET ,数据库文件,ODBC ADO 和更多数据源。如下图所示,在创建新连接中
 
(图1
DAO 通常是连接一些文件型数据库;展开“Access/Excel(DAO) ”,双击“建立新连接”,在弹出来的对话框中,在“数据库类型”选项中,我们可以看到可以连接Access Excel Dbase Louts WK Paradox ,文本等文件性数据库。如图2 。我们可以以一个Access 为例来演示。
首先,Crystal Reports 提供了一个Access 数据库,我们可以通过“visual studio 安装盘符"Program Files"Microsoft Visual Studio 9.0"Crystal Reports"Samples"chs"databases ”下找到xtreme.mdb ,这个数据库是Crystal Reports 提供的实例数据库。
接下来,单击为“数据库名称”后的浏览按钮,浏览到上面路径,“数据库类型”选Access ,因为这个数据库没有密码,所以数据库密码项放空就可以。确定Access/Excel(DAO) 对话框,然后展开“Access/Excel DAO )”下的表,选中“产品”表,把它添加在到右边,先定表中,然后确定,回到“字段资源管理器”,展开数据库字段,展开产品,选中“产品ID ”,“产品名称”,“产品类型”,分别拖放到报表(CrystalReport.rpt 页面)的详细资料上,如果图3 所以,这时厅注意,拖放上去的字段,在数据库字段资源管理器中是有个绿色的对勾的,表示该字段被拖放过。最后单击CrystalReport.rpt 左下方的“主报表  预览”,就如图4 所示,我们会发现,在详细节中的字段会和表中的记录数相同。
 
(图2  
 
(图3
 
(图4
ADO.NET ADO.NET 以通过文件路径进行数据库的连接。用文件路径连接时,有三种文件格式,.xml .xsd .dll ,下面分别来说一下这三种格式。
 
(图5
Xml 就是一种数据保存格式,一个二维表,我们可以用xml 的形式来表示,如下面的代码:
<? xml  version = "1.0standalone="yes"?>
< NewDataSet >
 < Table >
    < id > 1</id>
    < name > a         </name>
 </ Table >
 < Table >
    < id > 2</id>
    < name > b         </name>
 </ Table >
</ NewDataSet >
这是一个两行两列的表,我们如果要在ADO.NET 中引入xml 格式的文件,必须是这形式的xml 文件。
XSD 是一种用来xml 的结构定义文件,在visual studio 中,打开xsd 文件有两种方式,一种是文本编辑器的方式,如下列代码:
<? xml  version = "1.0standalone="yes"?>
< xs:schema  id = "NewDataSetxmlns="" xmlns:xs="[url]http://www.w3.org/2001/XMLSchema[/url]xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 < xs:element  name = "NewDataSetmsdata:IsDataSet="truemsdata:UseCurrentLocale="true">
    < xs:complexType >
      < xs:choice  minOccurs = "0maxOccurs="unbounded">
        < xs:element  name = "Table">
          < xs:complexType >
            < xs:sequence >
              < xs:element  name = "idtype="xs:intminOccurs="0" />
              < xs:element  name = "nametype="xs:stringminOccurs="0" />
            </ xs:sequence >
          </ xs:complexType >
        </ xs:element >
      </ xs:choice >
    </ xs:complexType >
 </ xs:element >
</ xs:schema >
另一种是图形方式,如图6 ,不管是文本还是图形,都是对xml 数据格式的一种描述。
 
(图6
不管是xml 还是xsd ,它们的作用都告诉报表字段设计器,该数据表的数据格式是什么样子的,其实就是表结构是什么样的。
Dll 方式是一种数据与报表分离的方式,dll 方式一般是从一个dll 内部提取数据,但dll 的是有一定规则的,dll 里必需有返回值为DataSet 的方法或属性(属性本身是两个方法组成的,这里只用属性的get 的方法),并且在DataSet 中有DataTable ,这样的话,我们才能在在“字段资源管理器”中看到字段,进行报表的设计,可以说这是一种约定,如果想成为Crystal Reports 的数据源dll ,只能按照这种约定去设计dll 。下面是一个dll 的实例。在选择完dll 路径后,类名和数据集名都会自动在下拉列表中。
using  System;
using  System.Collections.Generic;
using  System.Data ;
using  System.Text;
namespace  LD
{
    public class DataDLLL
    {
        DataSet DSS = new DataSet();
        DataTable DT = new DataTable();
        public DataDLLL()
        {           
            DT.Columns.Add("a");
            DT.Columns.Add("b");
            DT.Rows.Add("aa""bb");
            DT.Rows.Add("aaa","bbb");
            DSS.Tables.Add(DT);
        }
        public DataSet GET_DS1()
        {         
                return DSS;     
        }      
    }
}
数据库文件:数据文件与DAO连接数据源类似
ODBC:用ODBC是一种比较老的数据库连接技术,ODBC的配置在“控制面版”“管理工具”下有个“ODBC数据源管理器”,可以添加不同驱动的数据源,常用的数据库,在这里都能找到。(具体的ODBC配置网上有很多文章,可参考)。在这里,如图7中的数据源名称,都是ODBC中配置好的源据源。
 
(图7)
如果采用ODBC模式连接数据源,其实是多走了几步,我们看图8,是经过两个转换层的,所以一般情况下,我们不采用ODBC模式作为与数据的连接。
 
(图8)
OLE DB OLE DB的模式与配置ODBC有点相似,双击OLE DB,会弹出选择提供程序对话框,选择一种数据源驱动程序,如果是文件性的,就要求浏览到文件,如果是关系性的,就要要相关数据源的一性相关要素,比如如果连接的是SQL Server,有四个要素,服务器名,用户ID,用户密码,数据库名(图9)。
 
(图9)
更多数据库源: 为其他数据源留下的一个接口。
可见,Crystal Reports for Visual Studio的数据库专家给我们提供了很多种连接数据库的方式,具体的用法要根具自己的项目需要,根据技术的特点去把握。在这里,推荐大家用ADO.NET,因为我们都是在用.net。
Crystal Reports for Visual Studio访问数据库的策略有两种方式,拉模式和推模式
拉模式:是报表从数据库把数据拉到报表上,这种模式,是报表本身查询数据,不需要开发人员编写代码。所以在不需编码时使用拉模式。拉模式相对来说比较死板。

推模式:推模式需要开发人员编写代码以连接到数据库,查询与报表中字段匹配的数据,并把数据给报表。所以推模式在设计报表的时候,报表设计人员需要一个表格的定义格式,就是表的字段格式,来设计报表的框架。














本文转自桂素伟51CTO博客,原文链接:http://blog.51cto.com/axzxs/149697 ,如需转载请自行联系原作者




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值