[分享]水晶报表交叉表及数据过滤基础篇
- 格式:doc
- 大小:936.50 KB
- 文档页数:21
交叉表的创建及交叉表数据排序设置本文详细讲述一下如何创建交叉表以及交叉表的一些简单定制水晶报表9.2,同样适用于水晶报表10(含)及以下版本准备首先你要知道什么是交叉表,又是在什么情况下需要用交叉表“交叉表”对象是一个网格,用来根据指定的条件返回值。
数据显示在压缩行和列中。
这种格式易于比较数据并辨别其趋势。
它由三个元素组成:行列摘要字段我做了简单的表格进行说明,相信你可以很快跟你的应用对上号了好,现在我们开始Step1:从头开始创建交叉表在这里我简单的选取了一个表,这个表的数据并不适合用来做交叉表不过我在这里只做演示用,就不管那么多了这里选你要在行和列上显示的数据,以及相应的汇总图表在这里就不要选了好,交叉表这就完成了Step2:设置行列的数据显示顺序有时候,我们发现数据显示的顺序不是自己想要的,这个时候我们可以自己设置一下。
进入交叉表专家选中你要进行重新排序的字段,点“组选项”出现一个小窗口,这里的顺序有三种:升序、降序、指定顺序这里没有按“原始顺序”,所以顺序经常会乱这个时候我们来选“指定顺序”重新指定,需要提醒的是,如果数据太多,这样就很费劲,但是没办法。
此时这个界面上多了两个标签页水晶报表会自动感知数据罗列出来,你可以选一下,就可以依次列在下面的列表里如果你使用的是字段定义等不直接连接数据库的方式的话,此处就没有数据了需要自己指定,点“新建”就可以操作了你也可以只设定自己比较关心的几个数据靠前,如果是这样的话,你需要注意后面一个“其他”标签页这个上面有三个选项第一个是:其他全部丢弃。
第二个是:其他的放在一起,作为一项来像是第三个是:保留在各自的组中。
没有设置顺序的数据按原来的显示顺序排列在你设置好数据的后面我们一般选第三个好,现在数据出来了,看到效果了吧?你还可以设置行数据的显示顺序交叉表还有一些别的设置,进入交叉表专家,在“自定义样式”里可以做些设置如抑制空行/空列显示之类的交叉表左上角是个缺口,这应该是交叉表的一个标示,但是很不符合中国的报表习惯如果只是一页的话,你还可以自己画个线或者是弄个图片堵上,但是跨页的时候这个缺口在后面的页上还是会显示出来。
水晶报表的基本使用方法水晶报表是一种用于数据分析和可视化的工具,它可以帮助用户更好地理解和展示数据。
在使用水晶报表时,我们需要掌握一些基本的使用方法,以便能够灵活运用它的功能。
下面将介绍水晶报表的基本使用方法。
我们需要了解水晶报表的界面。
水晶报表的界面通常由菜单栏、工具栏、报表区域和数据源区域组成。
菜单栏包含了各种功能选项,可以通过点击菜单栏上的选项来进行相应的操作。
工具栏中则提供了一些常用的工具按钮,方便我们快速进行操作。
报表区域是我们设计和展示报表的主要区域,我们可以在这里对报表进行编辑和预览。
数据源区域则是用于连接数据源和导入数据的区域。
在开始设计报表之前,我们首先需要连接数据源。
水晶报表支持多种数据源的连接,包括数据库、Excel文件、文本文件等。
我们可以通过点击数据源区域中的相应按钮来选择并连接数据源。
连接成功后,我们就可以在数据源区域中看到已连接的数据表。
接下来,我们可以开始设计报表了。
水晶报表提供了丰富的报表设计功能,可以满足各种需求。
我们可以通过拖拽字段到报表区域来选择需要展示的数据,并可以对数据进行排序、筛选、分组等操作。
在报表区域中,我们可以选择不同的报表类型,如表格、柱状图、折线图等,来展示数据。
我们还可以对报表进行样式设置,如调整字体、颜色、边框等,以使报表更加美观。
除了基本的报表设计功能,水晶报表还提供了一些高级功能,如参数设置、公式计算、数据透视等。
参数设置可以让用户在使用报表时输入参数,以实现动态查询和筛选数据的目的。
公式计算可以用于对数据进行复杂的计算和分析。
数据透视可以帮助我们对大量数据进行汇总和分析,以便更好地理解数据。
在设计完报表后,我们可以对报表进行预览和输出。
水晶报表可以生成多种输出格式,如PDF、Excel、HTML等,我们可以根据需要选择相应的输出格式。
在预览报表时,我们可以查看报表的实际效果,并可以进行调整和修改。
在输出报表时,我们可以选择输出的范围和文件名,并可以设置一些输出选项,如是否包含页眉页脚、是否自动换页等。
水晶报表的基本使用方法水晶报表是一种数据可视化工具,可以帮助用户更直观、清晰地呈现数据。
使用水晶报表可以轻松创建各种类型的报表,包括数据表格、图表、交叉表等。
本文将介绍水晶报表的基本使用方法。
一、创建报表在水晶报表软件中,可以通过多种方式创建报表。
最常用的方法是使用向导或模板来创建报表。
用户可以根据需要选择不同的报表类型和样式,然后按照向导的指引逐步完成报表的设计和设置。
二、导入数据在创建报表之前,首先需要导入数据。
水晶报表支持多种数据源,包括数据库、Excel表格、文本文件等。
用户可以选择合适的数据源,并根据需要设置数据连接参数。
导入数据后,可以对数据进行预处理,如筛选、排序、分组等操作。
三、设计报表在导入数据后,可以开始设计报表的布局和样式。
水晶报表提供了丰富的设计工具和功能,可以轻松创建各种类型的报表。
用户可以选择合适的数据字段,并根据需要设置字段的显示格式、计算公式等。
此外,还可以添加标题、页眉、页脚等元素,以及设置报表的背景、字体、颜色等样式。
四、创建数据透视表水晶报表还支持创建数据透视表,可以帮助用户更好地分析和汇总数据。
用户可以选择需要分析的字段和计算方式,然后根据需要进行数据透视表的设置和调整。
通过数据透视表,可以快速生成汇总表、交叉表等报表,并进行数据筛选、排序、分组等操作。
五、添加图表水晶报表提供了丰富的图表类型,包括柱状图、折线图、饼图等。
用户可以根据需要选择合适的图表类型,并将数据字段拖拽到图表中进行数据分析和展示。
通过设置图表的样式、颜色、标签等属性,可以使报表更加直观、易于理解。
六、设置报表参数在设计报表过程中,还可以设置报表的参数,以便用户在查看报表时进行灵活的数据筛选和分析。
用户可以添加参数字段,并设置参数的类型、默认值、取值范围等属性。
通过参数设置,可以实现报表的动态筛选和交互式操作。
七、导出报表完成报表设计后,可以将报表导出为不同的格式,如PDF、Excel、Word等。
Crystal水晶报表基础知识汇总(一)制作B/S的朋友肯定对Crystal Report绝不陌生功能强大,方便我在网上查找了许多关于Crystal Report的资料对其做了整理、调试在自己学习的同时,也希望拿出来与大家分享不足之处请多指教一、Crystal报表的建立水晶报表在应用时分两种方法,分别是拉模式(PULL)、推模式(PU SH)拉模式:在水晶报表生成时的数据源是从水晶报表文件中的SQL语句从数据库中提取的,在编程时不用重写SQL语句,但要加上登录信息推模式:在水晶报表生成时的数据源,是用编程时重写水晶报表中SQL语句而生成的dataset对像也就是说,推模式是用dataset组装水晶报表水晶报表组件介绍:水晶报表在VS2005中有两种组件:WEB项目中分别是CrystalReportSource,CrystalReportViewerFORM项目里是分别是CrystalReport,CrystalReportViewerCrystalReportSource,crystalReport是水晶报表的数据提供者;CrystalReportViewer是水晶报表的浏览器另外还要介绍一下水的报表的文件是以rpt为扩展名的文件,该文件可以用VS2005生成WINFORM中的建立:1.首先建立一个新的项目工程,在项目中添加一个Crystal报表在报表的创建向导中我们创建一个新的OLE DB (ADO)连接,以便于我们对SQL数据库中表的连接2.在弹出的连接类型窗口内,选择Microsoft OLE DB Provider for SQL Server一项,以确立报表的数据连接为SQL服务类3.在连接信息当中选择所需使用的服务器名,并输入相应用户ID和密码,选择好报表所要连接的数据库后,新的数据库连接便建立完成此时,我们可以从报表数据连接窗口中看到我们所创建的报表,并选择需要的表,进行数据连接4.此后,我们可以根据报表向导进行表间关联、排序索引设置、;样式选择等表的初始化设置完成Crystal 报表与SQL服务器内数据连接以后,我们可以在报表中预览所创建的报表样5.对Crystal报表进行保存后,在WINFORM的窗口中建立CrystalReportViewer控件,生成水晶报表的预览窗口在建立中,我们可以根据需要对该控件的添加项进行筛选,包括显示工具栏、显示组树、显示状态栏三项6.在WINFORM窗口中添加ReportDocument控件,并为该控件选择一个需要进行类型化的Report表单WEBFORM中的建立:建立方法与WINFORM方式基本相同,但不需要建立ReportDocument 在建立过程中一定注意,在.aspx 设计器中建立CrystalReportViewer与CrystalReportsource两个控件,前者用作水晶报表的预览,后者起到报表与预览连接的作用,负责建立CrystalReportViewer与Crystal报表间的连接二、报表数据的连接拉模式(PULL):WINFORM中建立连接:方式一:如果该页面只调用固定的一个Crystal报表,可以直接在CrystalReportViewer中进行选择报表,将Crystal 报表与其进行绑定方式二:如果页面需根据具体要求,调用不同的报表进行显示,那么我们就需要通过对报表的连接的设置来完成这一功能程序如下://CrystalReport1.rpt是水晶报表文件的名称;CrystalReport11是从工具箱加到页面上的CrystalDocument crystalReport11.Load(Application.StartupPath + "CrystalReport1.rpt");//运用CrystalDocument读取所需Crystal表单路径;crystalReport11.SetDatabaseLogon("sa", "", @"BENQ-JA Y", "Userdatabase");//进行CrystalDocument连接服务器的设置,其中第一参数:用户名;第二参数:密码;第三参数:服务器名;第四参数:数据库名crystalReportViewer1.ReportSource = crystalReport11;//将CrystalReportViewer的报表源指向CrystalDocumentWEBFORM中建立连接:方式一:在CrystalReportSource中直接对表单源进行配置,选择需要宣示的表单在CrystalReportViewer中将报表源指定为CrystalReportSource,即可在该网页中生成指定报表的水晶报表方式二:通过程序进行具体配置,将所需Crystal报表与预览页面进行连接实现报表的灵活性选择程序如下:// CrystalReport.rpt是水晶报表文件的名称;CrystalReportSource1是从工具箱加到页面上的水晶报表数据源对像CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt"));//读取Crystal表单所在路径,将其与CrystalReportSource进行绑定CrystalReportSource1.ReportDocument.SetDatabaseLogon("sa", "", @"BENQ-JA Y", "UserDatabase");//进行数据库连接,参数一:用户名;参数二:密码;参数三:服务器名;参数四:数据库名CrystalReportSource1.DataBind();//对CrystalReportSource进行数据绑定CrystalReportViewer1.ReportSource = CrystalReportSource1;//将预览源指定为CrystalReportSourceCrystalReportViewer1.DataBind();//对CrystalReportViewer进行数据绑定推模式(PUSH):在推模式下,必须建立DataSet数据集,用来进行数据源填充在推模式中编程组装的DataSet里的SQL 语句中的字段要与水晶报表里的SQL语句字段一致WINFORM中建立连接:程序如下:string sql = "select * from UserInfor";string conn = "server=BENQ-JA Y;Database=UserDatabase;uid=Sa;Pwd=;";DataSet ds = new DataSet();SqlConnection con1 = new SqlConnection(conn);SqlCommand cmd1 = new SqlCommand(sql, con1);SqlDataAdapter sqlad = new SqlDataAdapter();sqlad.SelectCommand = cmd1;//获得一个TRANSACT-SQL存储过程,用于在数据源中选择记录sqlad.Fill(ds, "sql");//填充SQL命令所指定的行crystalReport11.Load(Application.StartupPath + "CrystalReport1.rpt");crystalReport11.SetDataSource(ds.Tables["sql"]);crystalReportViewer1.ReportSource = crystalReport11;WEBFORM中建立连接:程序如下:string sql = "select * from UserInfor";string con1 = "server=BENQ-JA Y;Database=UserDatabase;uid=sa;pwd=;";DataSet ds = new DataSet();SqlConnection con = new SqlConnection(con1);SqlCommand com = new SqlCommand(sql, con);SqlDataAdapter sqlad = new SqlDataAdapter();sqlad.SelectCommand = com;sqlad.Fill(ds, "sql");CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt")); CrystalReportSource1.ReportDocument.SetDataSource(ds.Tables["sql"]);CrystalReportSource1.DataBind();CrystalReportViewer1.ReportSource = CrystalReportSource1;CrystalReportViewer1.DataBind();三、报表打印水晶报表的CrystalReportViewer中默认配备的工具栏可实现打印功能,但其功能比较单一,无法进行打印机选择。
[分享]水晶报表交叉表及数据过滤基础篇下面以PUSH模式为例,图解制作过程:(本文转载CSDN)首先在界面上放置两个dataTimePicker控件,分别取名dtpStart,dtpEnd,可以任意选择起止时间,一个“测试报表”按钮(本案例该按钮起到刷新报表作用),取名btnReport,还有cryta lReportView控件是少不了的(要不然怎么查看报表呢:)),采用默认名称,Form界面就这些东西。
既然是PUSH模式,就必须给它一个“骨架”,在项目中添加新项选择数据集,如图示:名称随意(我这里是默认名DataSet1),然后打开数据集设计界面,右击->添加->DataTabl e,此时界面已多出DataTable1,右击DataTable1->添加->列,输入列名dtValue,在属性框中更改其数据类型为System.DateTime,如图示:继续添加两列(根据需求而定,这里的列相当于数据库中的字段),TextType(System.Stri ng),iCount(System.Int32),记得保存,此时“骨架”构造完毕,此时还是一个空匣子。
往项目中添加一模板rpt文件,跟刚才添加数据集过程类似,我这边继续采用默认名,打开rpt文件,会有一个“字段资源管理器”框,右击数据库字段->数据库专家,会弹出一个数据库专家界面,在这个界面我们把刚才构造的“骨架”放到报表中来,如图示:在数据库字段中把要显示的字段拖放到报表详细资料节,如图示:然后插入交叉表,该是本文的重点之一:右击报表尾空白处->插入->交叉表,在交叉表专家中设置如下:重点也就是这样,很简单吧:)然后我们设置下日期和数字的显示格式,右击日期字段dtValue 对象->设置对象格式相应的数字对象也设置下这样交叉表部分就算完成了,最后我们再根据设置的起止时间进行数据过滤(本文另一重点)这里我们用两个参数来接收这两个起止时间值,在字段资源管理器中右击参数字段->新建,如图示同理再新建一参数(注意类型的选择),取名periodEnd,然后在报表空白处点右键->报表->选择专家,此时会弹出选择专家界面点确定后在设置如下:最终运行效果如下我们发现交叉表左上角有一大大缺口,实在不雅,可参考如下左上角缺口大补丸水晶报表的交叉表,有个很大的缺憾,就是左边那个缺口。
水晶报表讲义[键入文字]水晶报表课程讲义苏州工业园区博思企业管理咨询有限公司1 / 58[键入文字]第一章水晶报表的作用 ..................................................................... ............................... 4 第二章做一个简单的报表 ..................................................................... .............................. 4 第三章报表打印位置与打印机设置 ..................................................................... ................ 6 1、报表打印位置 ..................................................................... ............................................ 6 2、打印机设置 ..................................................................... ................................................ 7 第四章数据库专家 ..................................................................... ............................................ 7 第五章报表中字段 ..................................................................... ............................................ 7 1、数据库字段 ..................................................................... ................................................ 7 2、公式字段 ..................................................................... .................................................... 8 3、sql表达式字段 ..................................................................... .......................................... 8 4、参数字段 ..................................................................... .................................................... 8 5、运行总计字段 ..................................................................... .......................................... 10 6、特殊字段 ..................................................................... .................................................. 11 7、文本字段 ..................................................................... .................................................. 11 8、图片字段 ..................................................................... .................................................. 12 第六章排序、分组、过滤 ..................................................................... .............................. 14 1、排序 ..................................................................... .......................................................... 14 2、分组 ..................................................................... .......................................................... 15 3、过滤 ..................................................................... .......................................................... 16 第七章多节报表 ..................................................................... .............................................. 17 1、防止可变长度的对象相互覆盖 ..................................................................... .............. 17 2、当字段为空时消除空白行 ..................................................................... ...................... 18 3、在特定情况下添加空白行 ..................................................................... ...................... 19 4、使对象延续到后续节 ..................................................................... .............................. 21 第八章图表 ..................................................................... ...................................................... 21 1、图表类型 ..................................................................... .................................................. 21 2、使用数据库中字段绘制图表 ..................................................................... .................. 28 3、使用汇总或小计字段上绘制图表 ..................................................................... .......... 34 4、在交叉表中绘制图表 ..................................................................... .............................. 38 第九章 OLE对象 ..................................................................... .. (38)2 / 58[键入文字]1、插入静态OLE对象 ..................................................................... .................................. 39 2、插入嵌入对象 ..................................................................... .......................................... 39 3、插入链接对象 ..................................................................... .......................................... 40 第十章交叉表 ..................................................................... .................................................. 41 1、交叉表示例 ..................................................................... .............................................. 41 2、在交叉表中插入图表 ..................................................................... .............................. 43 第十一章报表警报 ..................................................................... .......................................... 46 第十二章公式 ..................................................................... .................................................. 47 1、公式的用途 ..................................................................... .............................................. 48 2、公式的创建 ..................................................................... .............................................. 48 第十三章自定义函数 ........................................................................................................... 50 1、自定义函数的使用 ..................................................................... .................................. 50 第十四章子报表 ..................................................................... .............................................. 53 1、子报表与主报表之间的区别 ..................................................................... .................. 53 2、何时使用子报表 ..................................................................... ...................................... 53 3、将不相关的报表组合到单个报表中 ..................................................................... ...... 54 4、一对多查询 ..................................................................... .............................................. 55 5、协调无法链接的数据 ..................................................................... .............................. 57 6、在单个报表中显示相同数据的不同视图 ...................................................................583 / 58[键入文字]第一章水晶报表的作用一、创建所能想象的任何报表Crystal Reports 几乎可以从任何数据源生成您需要的报表。
水晶报表完整教程:对比FineReport之交叉表水晶报表(crystal report)和FineReport都是很常用的报表工具,这里对比一下它们的交叉表功能。
水晶报表交叉表功能如下:创建交叉表报表本节介绍在新报表中创建“交叉表”对象的步骤以及如何在已有报表中添加“交叉表”对象。
在使用“交叉表”对象时应记住以下几点:可以有多个行、列以及汇总字段。
可以用作行、列或汇总字段的报表字段包括打印时间公式和运行总计字段。
您可以在“交叉表”的行上包括组排序(前N个或后N个)。
注意:不能将组排序应用于列。
如果需要,可以在一个报表中插入多个“交叉表”对象。
可以将“交叉表”插入报表页眉或报表页脚,也可以插入组页眉或组页脚。
可以将“交叉表”对象放在子报表中。
当要引用来自其他报表中的结果时,这一点很有用。
表交叉表示例此示例展示如何使用“交叉表”对象使复杂的数据变得易于理解。
本报表的目的是分析五种不同的自行车锁在四个不同地区的销售情况(按地区划分的车锁销售报表)。
为了更清楚起见,只包含了报表中最基本的信息:订单所来自的地区。
车锁名称。
所订数量。
第一种浏览数据的方式是采用最基本的报表形式,即未分组、未排序的纵栏式报表。
订单数据的报表-未排序/未分组此报表给出了详细的信息。
每行代表一份订单。
对于不同车锁,每个地区都有多份订单。
但是由于缺少汇总信息,几乎不可能从这样一张报表中得到任何有用的信息。
下面合乎逻辑的步骤就是以某种方式对数据进行分组。
既可以按地区分组也可以按产品线分组。
下面一节将创建新“交叉表”报表在“文件”菜单上,单击“新建”。
提示:创建OLAP报表的另一种方法是单击“标准”工具栏上的“新建”按钮。
出现“Crystal Reports库”。
在“选择向导”区中,单击“交叉表”。
单击“确定”。
出现“交叉表报表创建向导”。
展示这两种分组方法。
在交叉表汇总上绘制图表选择绘制图表所基于的交叉表。
在“插入”菜单上,单击“图表”。
水晶报表- SAP Crystal ReportsSAP金牌服务商北京奥维奥解析水晶报表- SAP Crystal Reports 水晶报表----SAP Crystal Reports水晶报表(CrystalReports)是目前国际上功能最为强大、最流行的报表软件。
作为报表行业的标准,CrystalReports具有以下功能:与企业任何数据源连接、建立业务逻辑的丰富功能、复杂的报表格式和结构、高精度的网络输出和打印输出。
水晶报表(CrystalReports)作为全球通用的报表工具,已经被360家IT厂商OEM到自己的产品中,水晶报表(CrystalReports)可帮助您快速创建灵活、特性丰富的报表,并将它们集成到Web和Windows 应用程序中。
它使您能够访问和格式化数据,利用全面的一套软件开发工具包(SDK)将报表嵌入到Java、.NET和COM应用程序中。
水晶报表(CrystalReports)的强大功能表现在:与企业任何数据源连接、建立业务逻辑的丰富功能、复杂的报表格式和结构、高精度的网络输出和打印输出等方面。
1. 水晶报表SAP Crystal Reports一次设计,任意实施创建结构内容的关键是设计出一个单一的可以满足各种不同用户需要的内容。
因此就需要与企业广泛的数据资源相连接(通常要将来自不同资源的数据放入到一个报表中),并以此为基础为用户提供一个信息概览。
同时,创建业务逻辑、复杂的格式控制和针对不同用户的个性化的内容的创建还需要用到各种灵活的工具2.水晶报表SAP Crystal Reports拥有世界标准标准的工具的价值就在于它强化了产品本身的可用性。
这些标准包括与工业标准有关的任何增值应用:大量的资源、大量的知识储备、与其它企业级软件供应商的合作和集成、易用的咨询和培训、第三方的书籍资料和文件等等。
标准工具对于企业应用的成功起着很大的作用,特别是在技术支持和服务方面。
VB中水晶报表使用第一步:在VB工程中Project菜单加入"Add Crystal Report 9",报表名使用默认即可。
这时Form2(Crystal Rerport自动添加的Form,假设名为Form2)被自动分配了如下代码:Option Explicitdim Report as New Cystal1Private Sub Form_Load()Screen.MousePointer = vbHourglass '调用水晶报表时置鼠标为沙漏状CRViewer91.ReportSource = Report '该语句的赋值将在后面被修改CRViewer91.ViewReportScreen.MousePointer = vbDefault '调用水晶报表完成后置鼠标为默认形状End SubPrivate Sub Form_Resize()CRViewer91.Top = 0CRViewer91.Left = 0CRViewer91.Height = ScaleHeightCRViewer91.Width = ScaleWidthEnd Sub第二步:点击Crystal Report设计器的"数据库字段",选定"数据库专家...",然后点"创建新连接",再点"仅字段定义",创建"数据库定义"文件,字段名和宽度和原数据库表保持一致。
最后,在数据库字段中获得了相应字段,将其置于报表上,按水晶报表的要求配置。
第三步:该步骤非常关键,添加一个Modual到工程文件中,定义全局的ADODB变量,实现数据库和水晶报表的动态连接。
代码如下:Public conn As New ADODB.ConnectionPublic rs As New ADODB.Recordset第四步:关于VB程序的ADO数据库连接注意事项,请看下面的打印按钮例程。
水晶报表基础操作从入门到精通1、水晶报表注册码在使用自带的水晶报表时,请注册,否则只能使用30次,水晶报表注册码如下:注册号:6707437608密码:AAP5GKS0000GDE100DS2、中使用水晶报表我们采用下面的几步使用Push模式执行水晶报表:1设计一个DataSet右击“解决方案浏览器”,选择“添加”--“添加新项”-->“数据集”,从“服务器资源管理器”中的“SQL Server”中拖放“Stores”表(位于PUBS数据库中)。
再将此表拖入数据集中。
而 .xsd文件中仅仅包含一个结构图,但是不会有任何数据在里面。
2创建一个.rpt文件同时将其指定给上一步建立的DataSet。
使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。
建立.rpt文件之后,右击“详细资料”-->“添加/删除数据库”,在”数据库专家“窗口中,展开”项目数据“(代替以前的OleDb),展开“数据集”--“DataSet1”,选择“Stores”表。
将“Stores”表添加到“选定的表”中,点击“OK”。
3在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系。
使用PULL模式下的方法,建立一个WebForm,添加一个Crystal Report Viewer 控件,并设定其属性,此处与PULL模式下是一致的。
代码如下:private void Page_Load(object sender, System.EventArgs e{DataSet1 ds = new DataSet1(;oCR = new MyReport(;SqlConnection MyConn = newSqlConnection(ConfigurationSettings.AppSettings["SqlConn"];MyConn.Open(;//直接访问数据表//string strSel = "select * from tbtree";//SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn;//MyAdapter.Fill(ds,"tbtree";//使用存储过程SqlCommand cmd = new SqlCommand("display", MyConn;mandType = CommandType.StoredProcedure;SqlDataAdapter MyAdapter = new SqlDataAdapter(cmd;MyAdapter.Fill(ds,"tbtree";oCR.SetDataSource(ds;}注意:在上面的代码中,你得注意一下oRpt是"Strongly Typed"的报表文件。
vs2008水晶报表入门教程:对比FineReport之交叉表水晶报表(crystal report)和FineReport都是很常用的报表工具,这里对比一下它们的交叉表功能。
水晶报表交叉表功能如下:创建交叉表报表本节介绍在新报表中创建“交叉表”对象的步骤以及如何在已有报表中添加“交叉表”对象。
在使用“交叉表”对象时应记住以下几点:可以有多个行、列以及汇总字段。
可以用作行、列或汇总字段的报表字段包括打印时间公式和运行总计字段。
您可以在“交叉表”的行上包括组排序(前N个或后N个)。
注意:不能将组排序应用于列。
如果需要,可以在一个报表中插入多个“交叉表”对象。
可以将“交叉表”插入报表页眉或报表页脚,也可以插入组页眉或组页脚。
可以将“交叉表”对象放在子报表中。
当要引用来自其他报表中的结果时,这一点很有用。
表交叉表示例此示例展示如何使用“交叉表”对象使复杂的数据变得易于理解。
本报表的目的是分析五种不同的自行车锁在四个不同地区的销售情况(按地区划分的车锁销售报表)。
为了更清楚起见,只包含了报表中最基本的信息:订单所来自的地区。
车锁名称。
所订数量。
第一种浏览数据的方式是采用最基本的报表形式,即未分组、未排序的纵栏式报表。
订单数据的报表-未排序/未分组此报表给出了详细的信息。
每行代表一份订单。
对于不同车锁,每个地区都有多份订单。
但是由于缺少汇总信息,几乎不可能从这样一张报表中得到任何有用的信息。
下面合乎逻辑的步骤就是以某种方式对数据进行分组。
既可以按地区分组也可以按产品线分组。
下面一节将创建新“交叉表”报表在“文件”菜单上,单击“新建”。
提示:创建OLAP报表的另一种方法是单击“标准”工具栏上的“新建”按钮。
出现“Crystal Reports库”。
在“选择向导”区中,单击“交叉表”。
单击“确定”。
出现“交叉表报表创建向导”。
展示这两种分组方法。
在交叉表汇总上绘制图表选择绘制图表所基于的交叉表。
在“插入”菜单上,单击“图表”。
BS报表制作向导一、制作报表样式1.新建水晶报表样式打开Visual Studio或水晶报表工具,点击菜单条中的文件—新建项目,在弹出的页面中选择其他语言-Visual J#-Crystal Reports应用程序修改名称和位置后,点击确定按钮,再在弹出的页面中选择作为空白报表,再点击确定按钮;如果已有一个水晶报表,要在现有项中再新增一个水晶报表样式,可以在解决方案资源管理器中在解决方案子主目录下,右键-添加新项,弹出以下页面,选择Crystal报表即可水晶报表工具Crystal Reports2008制作报表:工具栏文件->新建->空白报表/标准报表/交叉报表->数据库专家2.将报表数据源绑定数据库在显示的页面中,单击鼠标右键选择数据库-数据库专家在创建新连接中,点击OLE DB(ADO),弹出页面,提供程序中选择Microsoft OLE DB Provide for SQL Server,再点击下一步按钮,在弹出的页面中输入内容后,点击下一步按钮在弹出的页面中点击添加命令,输入SQL查询—报表所需字段(也可以是视图或存储过程),再点击确定按钮。
3.制作水晶报表A.工具箱--在左边工具箱中,可以选择工具画报表,文本对象(文本框及内容的输入),线条对象(画线),框对象(表格外面的框)水晶报表工具Crystal Reports2008:工具栏插入->文本对象/线/框B.字段--在字段中可以直接将要显示在报表中的字段拖放到报表中去C.合计的显示—选中要合计的字段,如金额,点击右键,插入-汇总在弹出的页面中,选择要汇总的字段和方式(求和,差,平均~~)点击确定后自动生成一个汇总字段,将该字段拖放到合计金额的位置即可水晶报表工具Crystal Reports2008:在“公式字段”新建“合计”,汇总字段为CalFee,拖动到页脚D.合计金额小写转换成大写—在右边字段中,选择公式字段,右键-新增(名为test),点击使用专家按钮,在弹出的页面中,选择报表自定义函数,再点击右键-新建,在弹出的页面中输入自定义函数有的名称(AmountToWord2),点击使用编辑器在下面的输入框中,输入以下函数(语法选择Basic语法)选择之前添加的公式字段test,在下面的输入框中输入以下内容(调用上面的函数)(语法选择Basic语法)Function CNMoney(ls As Number) As StringDim dx_sz As StringDim dx_dw As StringDim str_int As StringDim str_dec As StringDim dx_str As StringDim fu As StringDim a As StringDim b As StringDim c As StringDim d As StringDim b2 As StringDim num_int As NumberDim num_dec As NumberDim len_int As NumberDim i As NumberDim a_int As NumberDim pp As Numberdx_sz = "零壹贰叁肆伍陆柒捌玖"dx_dw = "万仟佰拾亿仟佰拾万仟佰拾圆"If ls = 0 ThenCNMoney = "零圆整"Exit FunctionEnd IfIf ls < 0 Thenls = Abs(ls) --返回绝对值fu = "负"Elsefu = ""End Ifdx_str = CStr(ls) --返回表达式,该表达式已被转换为String 子类型的V ariant--Dim MyDouble, MyString--MyDouble = 437.324 - ' MyDouble 是双精度值。
下面以PUSH模式为例,图解制作过程:(本文转载CSDN)
首先在界面上放置两个dataTimePicker控件,分别取名dtpStart,dtpEnd,可以任意选择起止时间,一个“测试报表”按钮(本案例该按钮起到刷新报表作用),取名btnReport,还有cryta lReportView控件是少不了的(要不然怎么查看报表呢:)),采用默认名称,Form界面就这
些东西。
既然是PUSH模式,就必须给它一个“骨架”,在项目中添加新项选择数据集,如图示:
名称随意(我这里是默认名DataSet1),然后打开数据集设计界面,右击->添加->DataTabl e,此时界面已多出DataTable1,右击DataTable1->添加->列,输入列名dtValue,在属性框中更改其数据类型为System.DateTime,如图示:
继续添加两列(根据需求而定,这里的列相当于数据库中的字段),TextType(System.Stri ng),iCount(System.Int32),记得保存,此时“骨架”构造完毕,此时还是一个空匣子。
往项目中添加一模板rpt文件,跟刚才添加数据集过程类似,我这边继续采用默认名,打开rpt文件,会有一个“字段资源管理器”框,右击数据库字段->数据库专家,会弹出一个数据库专家界面,在这个界面我们把刚才构造的“骨架”放到报表中来,如图示:
在数据库字段中把要显示的字段拖放到报表详细资料节,如图示:
然后插入交叉表,该是本文的重点之一:
右击报表尾空白处->插入->交叉表,在交叉表专家中设置如下:
重点也就是这样,很简单吧:)
然后我们设置下日期和数字的显示格式,右击日期字段dtValue对象->设置对象格式
相应的数字对象也设置下
这样交叉表部分就算完成了,最后我们再根据设置的起止时间进行数据过滤(本文另一重点)这里我们用两个参数来接收这两个起止时间值,在字段资源管理器中右击参数字段->新建,
如图示
同理再新建一参数(注意类型的选择),取名periodEnd,然后在报表空白处点右键->报表->
选择专家,此时会弹出选择专家界面
点确定后在设置如下:
最终运行效果如下
我们发现交叉表左上角有一大大缺口,实在不雅,可参考如下
左上角缺口大补丸
水晶报表的交叉表,有个很大的缺憾,就是左边那个缺口。
虽然我们通过自己画线或者其他方法,能补上这个口,但是一旦分页,后续仍然是缺口效果
在我以前的文章中,我主要是补了这个缺口,本文做一些完善
除了补缺口外,增加在缺口加标题。
并且保证这个缺口在分页后仍能完整保持跟第一页同样的效果。
手工课,无理论。
看图说话。
(一)默认效果,左缺口
设计视图
预览视图
(二)使用交叉表对象的边框来模拟交叉表表格边框
1:
在交叉表专家中,切换到“自定义格式”标签页。
点击下面的按钮,进入格线设计界面
这里我们把缺口靠近的左边线和上边线设置为白色。
点击确定后却换回界面,预览效果如下。
左边和上边的线已经没有了
2:
在交叉表上点右键,设置交叉表的格式
在边框里,把这两个边补上。
从这里大家可以看出,其实在前一个步骤中,我们也可以把4个边都设置为白色,然后在这里补上单线。
然后我们再看效果,第一页和后面页,可以看到这个角已经被完整补上了
(三)使用节的延伸属性模拟每页标题效果
本节的解决方法来自于可爱的阿尹mm,在此非常感谢。
原讨论贴在此:
/u/20090804/14/3d1b38a8-be1a-4f78-9dc7-0fd46928f14a.html
1:
要做到每页都显示一个标题,我们首先想到的是利用页眉。
因为之前我的页眉上已经放了一个页码了
所以我单独拆除一个节来,放一个标题(红字部分)。
注意看我的节安排。
交叉表是放在报表页脚上的,而不是平时惯用的报表页眉位置。
因为报表页眉先于页眉出现,所以是用不上页眉这个特性的。
所以选择放在报表页脚,保证交叉表分页后,页眉能压在交叉表的上面。
我们在这个环节先预览一下,可以看到这个红字最然每页都出现,但是却游离在交叉表的外面
2:
进入节专家,设置该节属性,勾选“延伸到后续节”。
然后我们再看效果,恩,就是这个样子了,这个直接就是后续页的效果。
原帖的百分比部分尚未实现,对原帖该需求不太明确,可参考
交叉表百分比之实现
交叉表除了实现交叉汇总外,亦有计算百分比(横向、纵向)的功能。
之前的文章中已经对交叉表的制作方法做了详细的说明,以下只针对百分比的情况进一步说明一下。
假设我们有以下数据表,
建一个如下的交叉表,注意汇总字段中,点了两个相同的汇总和
选取其中的一个,点击【更改汇总】,在弹出的小界面上勾选【以百分比显示】下拉框中会出现要可供选择的百分比的分母。
根据显示需要,选【行】或者【列】(后面看图后说明下区别)
下图就是分别按行和按列出现的样式,可以看出:
按行,就是比例项出现在行上,同一组比例项占一列按列,就是比例项出现在列上,同一组比例项占一行
可以调整一下样式
更还为更常见的横向显示(下面的那个我没改)。