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 ,如需转载请自行联系原作者




相关文章
|
7月前
|
XML 机器学习/深度学习 JavaScript
如何使用 SAP Intelligent Robotic Process Automation 自动操作 Excel
如何使用 SAP Intelligent Robotic Process Automation 自动操作 Excel
44 0
|
7月前
|
存储 API 数据库
使用 SAP CRM Application Enhancement Tool(AET) 创建扩展字段
使用 SAP CRM Application Enhancement Tool(AET) 创建扩展字段
52 0
|
存储 API 数据库
使用 SAP CRM Application Enhancement Tool(AET) 创建扩展字段(1)
使用 SAP CRM Application Enhancement Tool(AET) 创建扩展字段
使用 SAP CRM Application Enhancement Tool(AET) 创建扩展字段(2)
使用 SAP CRM Application Enhancement Tool(AET) 创建扩展字段
SAP LSMW 导入物料主数据报错 - You have not fully maintained the descriptions - 之分析
SAP LSMW 导入物料主数据报错 - You have not fully maintained the descriptions - 之分析
SAP LSMW 导入物料主数据报错 - You have not fully maintained the descriptions - 之分析
|
XML 监控 JavaScript
如何使用SAP Intelligent Robotic Process Automation自动操作Excel
如何使用SAP Intelligent Robotic Process Automation自动操作Excel
204 0
如何使用SAP Intelligent Robotic Process Automation自动操作Excel
一步步使用SAP CRM Application Enhancement Tool创建扩展字段
一步步使用SAP CRM Application Enhancement Tool创建扩展字段
95 0
一步步使用SAP CRM Application Enhancement Tool创建扩展字段