动态生成水晶报表
水晶报表的使用

3.3 Pull模式的使用
首先创建rpt文件,并使用水晶报表设计接 口设置一些必须的数据连接。 拖放一个 CrystalReportViewer控件至 aspx页面,设置它的属性指定我们上一步 创建的.rpt文件。 在代码中调用DataBind方法。
创建 .rpt 文件:
1)
2) 3) 4) 5)
使用Pull模式导出报表
private void btnOutput_Click(object sender, System.EventArgs e) { CrystalReport1 myReport = new CrystalReport1(); CrystalDecisions.Shared.DiskFileDestinationOptions DiskOpts = new CrystalDecisions.Shared.DiskFileDestinationOptions(); myReport.ExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile; myReport.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.PortableDoc Format; DiskOpts.DiskFileName = "c:\\Output.pdf"; myReport.ExportOptions.DestinationOptions = DiskOpts; myReport.Export(); }
6)
7) 8)
在右击“解决方案游览器”,在弹出的菜单中选择“添加” --“添加新项”-->“Crystal Report” 在“Crystal Report 库”中选择“作为空白报表”单选按 钮,最后单击“确定”。 出现水晶报表设计器。 右击报表中的“详细资料区”,选择“数据库”->“添加/ 删除数据库..." 在弹出的“数据库专家”中,扩展“OLE DB(ADO)”选项, 此时会弹出另外一个“OLE DB(ADO)”窗口。 在 "OLE DB (ADO)" 弹出窗口中,选择 "Microsoft OLE DB Provider for SQL Server" 然后 "Next" 指定连接的信息(选择Pubs库) 单击“下一步”,最后单击“完成”按钮。
水晶报表的基本使用方法

水晶报表的基本使用方法水晶报表是一种数据可视化工具,可以帮助用户更直观、清晰地呈现数据。
使用水晶报表可以轻松创建各种类型的报表,包括数据表格、图表、交叉表等。
本文将介绍水晶报表的基本使用方法。
一、创建报表在水晶报表软件中,可以通过多种方式创建报表。
最常用的方法是使用向导或模板来创建报表。
用户可以根据需要选择不同的报表类型和样式,然后按照向导的指引逐步完成报表的设计和设置。
二、导入数据在创建报表之前,首先需要导入数据。
水晶报表支持多种数据源,包括数据库、Excel表格、文本文件等。
用户可以选择合适的数据源,并根据需要设置数据连接参数。
导入数据后,可以对数据进行预处理,如筛选、排序、分组等操作。
三、设计报表在导入数据后,可以开始设计报表的布局和样式。
水晶报表提供了丰富的设计工具和功能,可以轻松创建各种类型的报表。
用户可以选择合适的数据字段,并根据需要设置字段的显示格式、计算公式等。
此外,还可以添加标题、页眉、页脚等元素,以及设置报表的背景、字体、颜色等样式。
四、创建数据透视表水晶报表还支持创建数据透视表,可以帮助用户更好地分析和汇总数据。
用户可以选择需要分析的字段和计算方式,然后根据需要进行数据透视表的设置和调整。
通过数据透视表,可以快速生成汇总表、交叉表等报表,并进行数据筛选、排序、分组等操作。
五、添加图表水晶报表提供了丰富的图表类型,包括柱状图、折线图、饼图等。
用户可以根据需要选择合适的图表类型,并将数据字段拖拽到图表中进行数据分析和展示。
通过设置图表的样式、颜色、标签等属性,可以使报表更加直观、易于理解。
六、设置报表参数在设计报表过程中,还可以设置报表的参数,以便用户在查看报表时进行灵活的数据筛选和分析。
用户可以添加参数字段,并设置参数的类型、默认值、取值范围等属性。
通过参数设置,可以实现报表的动态筛选和交互式操作。
七、导出报表完成报表设计后,可以将报表导出为不同的格式,如PDF、Excel、Word等。
VS2010中动态创建水晶报表的心得

VS2010中动态创建渴晶报表的心得体会指导老师 吕中华(Y2学术部)作 者 向 根(NET4短训班)半个月之前,老大在班上组织了一个技术委员会帏组,帏组中的每一位成员都被赋予一个技术点,要湂自身在课下努力钻研后,于特定的时间在教室里利用投影设备为班上其他同学做出详细的讲解。
这些技术点,都是我们在B/S项目中所需要用的重要知识点,同时也是现今在工作当中运用的比较广滛的。
与其他成员分到的Lucene检索技术、Log4Net日志记录技术、iTextSharp导出PDF技术、SharpZibLib压缩解压缩不同,我被分到的技术点是:渴晶报表在.NET平台上的使用。
要湂实现的功能是:1.下载安装Crystal Report Designer;2.报表的绘制;3.与ASP集成,动态实现数据库的查询并在渴晶报表中进行显示。
初识渴晶报表之前只是在书上见到过渴晶报表这个词湇,它是内置于VS开发环境中的一种报表设计工具,可帮助程序员在.NET平台上创建高度复杂且专业级的互动式报表。
它协同数据库一起工作,可以帮助用户分析和解释重要的信息,使用渴晶报表既可以创建简单的报表,也可以创建复杂的、专业的报表,它可以从任何数据源生成所需要的报表。
设计好报表后,可以帆其通过多种形式发布,例如word、excel或者web网页等,高级的web渴晶报表还允许工作组中的其他成员在他们自己的web浏览器中查看或者共享报表。
使用Crystal Report还可以在基于GUI设计器中创建复杂而专业的报表,然后帆其链接到几乎所有数据源以及代理数据,例如结果集。
使用GUI中附带的向导,可以方便地进行格式化设置、分组、图标制作和报表。
安装渴晶报表在VS2005和2008的版本中,渴晶报表都是集成在这两个IDE中,在VS2010下,渴晶报表已经不再是VS中的一部分,帽管微软的VS2010中也有自带的报表控件Report View,但是相比渴晶报表中CrystalReportView、CrystalReportDocument,应用范围上还是帏了许多。
VB中如何使用水晶报表

水晶报表(Crystal Report)的业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口。
在平台做过报表开发的程序员,一定都对水晶报表强大、高效、集成等特性留下了深刻印象。
除了开发新程序外,在工作中我们常需要接触到很多较早的软件系统报表功能升级的需求,如果能结合水晶报表这一强大的工具,往往能事半功倍。
VB是以前流行的数据库开发平台,用其开发的C/S系统在社会上有非常大的保有量,但VB 超弱的报表功能往往让程序员面对客户的升级要求一筹莫展。
本文并不做水晶报表的使用和编程教学,实际上水晶报表本身的使用方法和平台并没有太大的差别,我主要是和大家探讨一下VB和水晶报表的一种较方便的接口方式。
我的开发测试平台是Windows2003 Standard简体中文版、VB6.0+sp5英文版、Crystal 9.0简体中文开发版。
关于在水晶报表中制作报表模板的方法,并非本文的探讨范围,读者可以参考Crystal Report 的帮助文件和官方网站的技术资料。
简单地说,首先要通过水晶报表的数据库引擎手动连接相应的表结构,制作报表模板,并保存为rpt文件,该项操作和利用VB自带的报表工具制作报表大同小异。
用VB调用水晶报表进行报表开发的简单接口方法就是,在水晶报表中用"仅字段定义"来获得字段分布文件,用虚拟的文件创建表字段,用CRAXDRT对象来强制改变数据源(ADO.recordset),其效果相当于在VB中调用了rpt文件。
下面分步骤介绍编程方法。
第一步:在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设计器的"数据库字段",选定"数据库专家...",然后点"创建新连接",再点"仅字段定义",创建"数据库定义"文件,字段名和宽度和原数据库表保持一致。
使用代码动态设置水晶报表中的文本,字段等对象

如何使用代码动态设置水晶报表中的文本,字段等对象呢?如何使用代码动态设置水晶报表中的文本,字段等对象呢?//VB首先,你必须要声明一个OBJECT变量(eg. TextObject, FieldObject, ......),当然不是一般的对象,而是:Dim xObject As CrystalDecisions.CrystalReports.Engine.FieldObject (字段)Dim xObject As CrystalDecisions.CrystalReports.Engine.TextObject(文本)Dim xObject As CrystalDecisions.CrystalReports.Engine.LineObject(线条)Dim xObject As CrystalDecisions.CrystalReports.Engine.BoxObject(矩形框)......其次,你必须将水晶报表的真实对象赋值给它,例如:xObject = crReport.ReportDefinition.ReportObjects.Item("FieldObjec tName")xObject = crReport.ReportDefinition.ReportObjects.Item("TextObject Name")xObject = crReport.ReportDefinition.ReportObjects.Item("LineObject Name")xObject = crReport.ReportDefinition.ReportObjects.Item("BoxObjectN ame")......然后,你就可以调用它的各种属性和方法了:对于FieldObject,你可以:1.设置数值字段的小数点位数:xObject.FieldFormat.NumericFormat.DecimalPlaces = 42.设置布尔字段的输出类型:xObject.FieldFormat.BooleanFormat.OutputType =CrystalDecision s.Shared.BooleanOutputType.YesOrNo3.设置其他格式如(CommonFormat,DateTimeFormat,DateFormat,TimeForma t)对于TextObject,你可以:1.改变文本:xObject.Text = "嘿嘿"2.改变字体:xObject.ApplyFont(New Font("宋体", 10.0!))3.设置颜色:xObject.Color = Color.Red3.隐藏显示:xObject.ObjectFormat.EnableSuppress = True对于LineObject,你可以:1.设置线条风格:xObject.LineStyle = CrystalDecisions.Shared.LineStyle.DotLi ne2.设置线条颜色:xObject.LineColor = Color.Blue3.设置线条宽度:xObject.LineThickness = 34.设置其他格式(如:位置(top,left,right,bottom),边框等)对于BoxObject,你可以:1.设置填充颜色:xObject.FillColor = Color.Brown2.设置线条风格:xObject.LineStyle = CrystalDecisions.Shared.LineStyle.DotLi ne3.设置线条颜色:xObject.LineColor = Color.Blue4.设置线条宽度:xObject.LineThickness = 35.设置其他格式(如:位置(top,left,right,bottom),边框等)//C#CrystalDecisions.CrystalReports.Engine.TextObject xObject;xObject = (CrystalDecisions.CrystalReports.Engine.TextObject)Cryst alReportSource1.ReportDocument.ReportDefinition.ReportObjects["Text1 "];xObject.Text="条件";。
VB中如何使用水晶报表

水晶报表(Crystal Report)的业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口。
在平台做过报表开发的程序员,一定都对水晶报表强大、高效、集成等特性留下了深刻印象。
除了开发新程序外,在工作中我们常需要接触到很多较早的软件系统报表功能升级的需求,如果能结合水晶报表这一强大的工具,往往能事半功倍。
VB是以前流行的数据库开发平台,用其开发的C/S系统在社会上有非常大的保有量,但VB 超弱的报表功能往往让程序员面对客户的升级要求一筹莫展。
本文并不做水晶报表的使用和编程教学,实际上水晶报表本身的使用方法和平台并没有太大的差别,我主要是和大家探讨一下VB和水晶报表的一种较方便的接口方式。
我的开发测试平台是Windows2003 Standard简体中文版、VB6.0+sp5英文版、Crystal 9.0简体中文开发版。
关于在水晶报表中制作报表模板的方法,并非本文的探讨范围,读者可以参考Crystal Report 的帮助文件和官方网站的技术资料。
简单地说,首先要通过水晶报表的数据库引擎手动连接相应的表结构,制作报表模板,并保存为rpt文件,该项操作和利用VB自带的报表工具制作报表大同小异。
用VB调用水晶报表进行报表开发的简单接口方法就是,在水晶报表中用"仅字段定义"来获得字段分布文件,用虚拟的文件创建表字段,用CRAXDRT对象来强制改变数据源(ADO.recordset),其效果相当于在VB中调用了rpt文件。
下面分步骤介绍编程方法。
第一步:在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设计器的"数据库字段",选定"数据库专家...",然后点"创建新连接",再点"仅字段定义",创建"数据库定义"文件,字段名和宽度和原数据库表保持一致。
在VisualBasic.Net中实现微机保护模版及水晶报表的动态生成

图 2 编辑 MP 40 S0 0—10装置方式模版界面 3
电气元件参数数据库将直接被整定计算过程调 用。在数据库服务器上有唯一的电气元件参数数据 库, 是所有电气元件的集合 , 它被所有图纸数据库所
3 1 图纸数 据 库 .
图纸数据库的 目的是为了建立各电气元件间的 拓扑联 系 , 于在 图形 界 面上 显示 电 网结构 。在计 用 算程序中拓扑联 系是通过绘制配置图的操作 自动实 现的, 因此在绘制配置图时将直接对图纸数据库进 行操作 。使用者 每新绘制一张配置图, 计算程序就 将在数据库服务器上 自动建立一个保存此图纸信息 的数据库。图纸数据库包括 以下几个数据表 : 母线 数据表 、 回线数 据表 、 回线 数 据 表 、 本数 据 表 单 双 文 等, 用于记录图形 在图纸上 的起点坐标 、 终点坐标、 在全网数据库中的编号、 文本的内容等等。
括的字段有模版项的索引号、 模版的内容 、 模版所对 应 的装置名称等。利用模版制作的 MP 40 —10 S0 0 3 型线 路保护 模 版界 面如 图 2所 示 。
库和电气元件参数数据 库。此外, 电网中还有多种
微机保护设备 , 本程序为微机保护定值计算提供了
设计模版的功能 , 因此在数 据库服务器上还有微机 保护模版数据库。
维普资讯
20 0 6年第 4期
广西电力
在 Vi a ai. t s l s Ne 中实现 uB c
微机保护模版及水 晶报表 的动态生成
Ac o p ihm e n Dy a i e to f Bo h M i r p o e s r b s d c m ls nto n m c Cr a i n o t c o r c s o - a e Re a i o e to o e nd Cr s a p r n Vi u lBa i . t l y ng Pr t c i n M d la y t lRe o t i s a sc Ne
水晶报表的使用经验和资料总结

水晶报表的使用经验和资料总结资料:中使用水晶报表(上) 2002-9-6 DotNet吧[HTML]在我们对中的水晶报表(Crystal Reports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心。
一周以后,在阅读了大量的“HOWTO”文档之后,我们成功地将一些简单的报告加入到了我们的程序中,并得到了一些小决窍。
这篇文章教你如何在.Net Web应用中使用水晶报表,也可以让你在学习过程中少走一些弯路。
为了得到最好的效果,读者最好需要有一些基础的访问数据库的知识以及使用的开发经验。
简介水晶报表可以由很多的方法得到,其中一个就是使用来创建,它提供了非常丰富模型以使我们能够在运行时操作属性和方法。
如果你正在使用开发.Net程序,那么你就不需要再安装其它软件了,因为他已经内嵌在中了。
优点:水晶报表有下面一些主要的优点:快速的报表开发能够导出成为复杂的交互性图表可以与其它控件一起在WebForm中使用能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式结构:一些组件组成了水晶报表的二层结构,需要的Web应用有:客户端 :客户端仅需要一个可以访问嵌入aspx页面报表的游览器就可以了服务器 :- 水晶报表引擎(Crystal Report Engine (CREngine.dll))通过它可以完成一些任务,如在报告文件中合并数据,转换报告为其它格式等。
也正是因为报告引擎的作用,才可以将中的水晶报表转换成为普通HTML格式- 水晶报表设计器(Crystal Report Designer (CRDesigner.dll))水晶报表就是在设计器中创建的,在设计器中你可以设计标题,插入数据,公式,图表,子报表等。
- .rpt报表文件执行报表中的第一步就是在水晶报表设计器接口创建此报表,在默认安装中微软已经提供了一些现成的.rpt例子。
- Data Source.rpt文件取得数据库的方法取决于你方法的选择,你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装DataSet,然后再将其传送到报表文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这两天学习如何生成动态水晶报表,看了网上的一些资料,觉得讲得都不是很详细。
今天晚上做一个小的实例,算是对这两天学习的总结吧。
先让我们来看一下现实现的步骤:一、新建一个项目:二、向项目中添加Crystal 报表和DataSet 数据集,报表使用专家向导,在DataSet 数据集中添加一个表,为表添加八列,都使用默认名。
三、为CrystalReport1 设置数据库字段与参数字段。
四:实现代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using CrystalDecisions.CrystalReports.Engine;using CrystalDecisions.ReportSource;using CrystalDecisions.Shared;using CrystalDecisions.Windows.Forms;/**//**//**//// <summary>/// 动态生成水晶报表////// 王稳嵩////// 2007-10-23/// </summary>namespace WindowsApplication4......{public partial class Form1 : Form......{CrystalReport1 CrystalReport11;ParameterFields paramFields;//定义一个参数字段集对象ParameterField paramField; //定义一个参数字段列表对象ParameterDiscreteValue paramDiscreteValue; //定义离散值参数对象DataSet1 ds1;SqlConnection conn = new SqlConnection("server=(local);Integrated Security = SSPI; database = Northwind");public Form1()......{InitializeComponent();}private void Form1_Load(object sender, EventArgs e)......{this.cmbSqlstring.Items.Add("select orderid,customerid from orders");this.cmbSqlstring.Items.Add("select * from Orders");this.cmbSqlstring.Items.Add("select * from Products");this.cmbSqlstring.Items.Add("等等");}private void butQuery_Click(object sender, EventArgs e)......{if (this.cmbSqlstring.Text != "")......{if (this.cmbSqlstring.Text == "等等")......{MessageBox.Show("兄弟您可真幽默,没有这样的sql语句吧");return;}this.dataGridView1.Columns.Clear();try......{SqlDataAdapter da = new SqlDataAdapter(this.cmbSqlstring.Text.Trim(), conn);ds1 = new DataSet1();da.Fill(ds1, "DataTable1");for (int i = 1; i < 9; i++)......{ds1.Tables[0].Columns.Remove("Column" + i.ToString());//删除DataSet1数据集中的预定义表DataTable1 中预定义的8列columns1 ……;}this.dataGridView1.DataSource = ds1.Tables[0];}catch (SqlException sqlEX)......{MessageBox.Show(sqlEX.Message);}catch (Exception Ex)......{MessageBox.Show(Ex.Message);}}else......{MessageBox.Show("sql语句不能为空");}}private void butPrint_Click(object sender, EventArgs e)......{try......{if (this.dataGridView1.DataSource != null)......{paramFields = new ParameterFields();if (this.ds1.Tables[0].Columns.Count >= 8)......{//查询结果中表的列数大于等于八列时for (int i =, 1; i < 9; i++)......{paramField = new ParameterField(); = "col" + i.ToString(); //设置对象参数字段对象名paramDiscreteValue = new ParameterDiscreteValue();paramDiscreteValue.Value = ds1.Tables[0].Columns[i - 1].ColumnName;//设置对象paramDiscreteValue的值,报表预览中指定的列名ds1.Tables[0].Columns[i - 1].ColumnName = "Column" + i.ToString(); //修改ds1 中DataTable1 中的列名paramField.CurrentValues.Add(paramDiscreteValue); //添加paramDiscreteValue到paramfield实例中paramFields.Add(paramField); //添加到参数字段集中}}else......{//查询结果中表的列数小于八时for (int i = 1; i < this.ds1.Tables[0].Columns.Count + 1; i++)......{paramField = new ParameterField(); = "col" + i.ToString();paramDiscreteValue = new ParameterDiscreteValue();paramDiscreteValue.Value = ds1.Tables[0].Columns[i - 1].ColumnName;ds1.Tables[0].Columns[i - 1].ColumnName = "Column" + i.ToString();paramField.CurrentValues.Add(paramDiscreteValue);paramFields.Add(paramField);}// 为因查询表列数小于八,以CrystalReport1中设定的八个参数字段不能完匹配,所以要为没有匹配的参数字段赋空值for (int i = this.ds1.Tables[0].Columns.Count + 1; i < 9; i++)......{paramField = new ParameterField(); = "col" + i.ToString();paramDiscreteValue = new ParameterDiscreteValue();paramDiscreteValue.Value = "";paramField.CurrentValues.Add(paramDiscreteValue);paramFields.Add(paramField);}}CrystalReport11 = new CrystalReport1();CrystalReport11.SetDataSource(ds1); //为CrystalReport11设置数据源crystalReportViewer1.ParameterFieldInfo = paramFields; //获取或设置参数字段集合。
crystalReportViewer1.ReportSource = CrystalReport11;}else......{MessageBox.Show("还没查询出数据");}}catch (Exception Ex)......{MessageBox.Show(Ex.Message);}}}}五:效果总结:首先建立一个数据集模板,然后建立一个水晶报表,将数据集模板与水晶报表的数据库字段建立连接,再为水晶报表设计打印模式,利用参数字段改变打打印时的列名,最后为水晶报表填充数据源。
要注意的是当我们为数据集定义了一个模板之后,在使用数据适配器填充数据的时,不为数据集新增了一个表,所以在填充数据的时候一定要指定要填充的模板表名,而且要删除原来的定义的模板列。
本例中最重要的是用到了:ParameterFields//包含报表中的每个参数字段的ParameterField 对象。
ParameterField //提供属性,以便检索和设置参数字段的选项和值。
ParameterDiscreteValue //提供属性,以便检索和设置离散值参数。
利用这三个类为先前设置的报表模板中改变参数字段的属性。
比如可以预先设计不同列数量的水晶报表模板,这样可以在打印不同列数时列宽合适分配。
还有因为我也是刚刚学习水晶报表,所以还不是很理解 2005 提供的报表模型,所以希望还能和大家一起学习。