水晶报表开发
- 格式:doc
- 大小:348.50 KB
- 文档页数:4
建立水晶报表的过程:▪ 1 设置DataSet数据源,建立数据集▪可以根据向导制作,过程简单。
▪ 2 建立报表▪使用上面的DataSet数据源,可以采用向导或手工,操作基本相同。
▪ 3 显示报表▪建立一个窗体(在此窗体中显示报表),▪窗体中添加crystalReportViewer控件(此控件用于显示具体的报表)▪在报表显示前指定一个DATESET作为数据源为报表的各个字段赋值▪把此报表指定给crystalReportViewer控件数据表说明[货物信息表](1)添加数据集(2)添加控件前的设置,如此图的dsn 设置点[新建连接]按钮后弹出界面(4)回到上一个界面后,点下一步请选择使用SQL语句,否则将一次多出四个存储过程,相对来说比较混乱。
而我们这里用的数据集仅目的是为了建立报表的时候可以设置报表字段。
(5)继续点下一步(6)点查询生成器,添加需要的数据库表(7)可以随意设置,自动会生成SQL语句,也可以点[执行查询]察看效果(8)点确定回到向导设置界面出现SQL语句(9)下一步保持默认(10)点完成(11)得到的数据集右键点配置,可以得到SQL 语句同时可以修改SQL点预览数据可以察看SQL语句执行结果(12)重点:这里的数据集对象是为了进行报表的设置,也就是说在报表设计的时候可以直接指定哪个位置显示什么字段,而字段的可以从上面做的数据集中直接拖出,比较方便。
如果报表显示的时候应该动态的为此报表提供查询出的数据集,提供数据集的方法依然是通过代码执行存储过程或者SQL语句来完成的ADAPTER对象的FILL方法。
因此我们拷贝上面查询分析器生成的SQL语句制作一个存储过程二)建立报表自动会弹出,选择报表向导拖动我们刚才设置的数据集到右边选择字段下一步这里我们不需要分组,所以不用设置下一步我们不需要筛选,如果需要筛选,右面图是个筛选例子最后设置报表风格,右面可以清楚显示预览效果,自己选择,建议标准符合常规建立的新报表如下设置页眉(1)报表页眉是每个报表的标题部分,默认状态时不显示,点击右键之后选择变为可显示状态可以拖动下面的页眉部分,来调整报表页眉的大小工具中拖个文本对象到报表页眉写字并设置大小拖个温州大学图标到界面上预览报表这种效果是正常的,数据很随意报表一般都有表格把文字隔开,如上图报表效果不美观,需要添加表格线注意可疑在页眉中标题的上下画2条线,而在详细资料部分只需文字下面绘制一条线,原因是报表页眉和页脚都是出现一次的地方,绘制的效果是编辑的效果,而详细资料部分是个模板位置,仅需要设置一行就可以产生无数行效果,而每一行都有下画线,这样上行的下画线将成为下行的上画线。
水晶报表基础操作从入门到精通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"的报表文件。
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数据库连接注意事项,请看下面的打印按钮例程。
ifs9水晶报表开发流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 需求分析与用户沟通,了解报表的需求和功能。
确定报表的数据源、格式、布局和输出要求。
创建简单水晶报表步骤1:打开VS工具,新建解决方案和项目2:先创建一个一个ds文件,在ds文件中添加一个datatable,并添加需要显示的列(此处的列和你从数据库中查询出来的字段名称相同),右击属性,选择相应字段的相应类型3:创建水晶报表文件(rptShow)选择标准- 在项目数据中找到刚刚创建好的数据集,并选择相应的datatable至右面的文本框中,点击完成,创建好报表文件。
5-1:在我做的报表文件中主要遇到的一个困难是求和;所以这里特别记录下1:新建【运行总计字段】并取名,这里设计名称为:Sum_Qty从报表字段中选择需要求和的字段,在汇总类型中选择和即可,此种方法为其一,还有一种方法则是建立好名称后,在公式工作室选择公式--→函数-→选择需要的函数并把相应的字段填充进去,我这里需要的是数量的求和,所以,选择好后是Sum(Qty) 即可,然后直接把之前创建好的名称放在报表文件中。
2:求和不同类型的数据,则需要进行判断,在我的数据库中有金和石两种数据,所以我要对石和金进行统计并求和。
同样需要创建运行总计字段,Sum_Qty,进入到公式工作室,找到刚刚创建好的运行总计字段名称(Sum_Qty),在右面的空白处写上判断格式:if UOM=’G’ then金的重量字段4:调整好相应的格式,再新建一个项目文件(这里是针对winform程序,web的我还没试过,等试了再写)5:在form表单中拉近一个报表显示控件,如图:6:编写代码实现报表的显示:Dim rpt As New rptDetails ------rptDetails 指的前文创建的报表文件名称Dim ds As New dsSummary.DeatilsQtyDataTable ------dsSummary(创建的数据集文件,DeatilsQtyDataTable 指的是数据集中,你想要使用的数据表,在此使用时,它会自动加上DataTable后缀,其实代表的就是你数据集中的DeatilsQty)rpt.SetDataSource(DBHelper.GetDetailsSummary(ds, PosCodes, txtFrom.Text.Trim,txtTo.Text.Trim)) -----调用方法(该方法返回的是dataTable类型)Me.rptShowDetails.ReportSource = rpt ---填充报表7:完成,显示效果如图:。
●新建一个项目:文件>>>>新建>>>>项目>>>Windows窗体引用程序●建报表1.右键添加“新建项”,选择“Crystal报表”(后缀名为.rpt)添加报表以后,项目下的引用会出现以下关于报表本身自带的数据集:2.选择“作为空白报表”3报表的大小在Crystal Reports(R) >>> 设计>>>打印机设置>>>大小4可以用线条对象,框对象画表格,用文本对象添加显示的文本5以下这些字段都可往报表里直接拖拽也可点击右键“插入“点击“主报表预览“效果:页眉:时一张表的表头详细资料:是要显示的数据(如果要打印预览的话,可以把所有的字段都放到详细资料里) 美化表格1.按住“Ctrl”键+鼠标左键点击文本对象右键“设置多个对象的格式”文本在表格里对齐方式:选中文本对象右键“设置多个对象的格式”>>> “共用”>>> 水平对齐方式:默认,左,居中,右,两端对齐。
文本四周添加边框:选中文本对象右键“设置多个对象的格式”>>>“边框”:无,单线,双线,短划线,点线。
调整文本字体:选中文本对象右键“设置多个对象的格式”>>> “字体“:段落:选中文本对象右键“设置多个对象的格式”>>> “段落“超级链接:选中文本对象右键“设置多个对象的格式”>>> “超级链接“1.右键添加“新建项”,选择“程序集”(后缀名为.xsd)2.工具箱>>>>数据集:拖拽一个DataTable 右键添加“列”注意:表名与sql查出来的表名取名要一致。
每一列的值跟数据库里字段的类型一致(点击“每一列“属性里的DataType)报表里进行汇总只能针对数字类型加载数据集1.右键“数据库字段”>>>“数据库专家”>>>“数据集”:把需要的数据源选中后点击“”如果添加了新的字段后选中“数据库字段”右键点击“验证数据库”即可刷新新的字段。
为什么水晶报表那么麻烦,每做一张报表都要选表,画线画格子,有没有一种方法可以一劳永逸?做一个模板,然后用不同的表都能用?还有就是能不能动态选择列,而且选择列后能报表能自动适用这个变化?甚至有些人也因为放弃了水晶报表,实际上这些都是水晶报表可以做到的。
在这里,我来讲解一下原理和实现。
希望该文章,能基本上解决这个问题。
当然,这个也不是万能的,也有其适用环境。
本文开发环境:VS2005 / CR XI R2 for .Net第一步:新建一个C#的水晶报表的WinForm空白项目。
在弹出报表数据源选择框的时候,不要选择任何任何数据源,直接点确定,创建一个空白报表。
第二步:项目中添加一个Dataset1.xsd,手工建立一个DataTable,命名为B igTable。
建立6个字段,全部为String型。
为什么用6个呢?这个数字6的确立,是根据你的实际需要,这个表的列的数目,需要大于等于你所需要操作的事实表的最大列数。
用为什么用String型呢?我们知道基本上所有的基础数据类型都可以转换为String,这样我们的这个表基本上可以容纳所有的数据类型。
好了,在报表中添加这个B igtable.将6个字段拖到详细资料节。
对齐。
()注意!不要使用框和线来画格子,这里用的是字段边框,初次操作可以暂时不用,我后面会专门讲一下这个格线的处理。
好了,这样我们的万能模板就做成了。
很简单,是吗?呵呵。
第三步:在w inform上拖上一个combox,一个button,用默认名称接口。
combox1用来选表的名称。
这样界面也完成了。
第四步:实现原理上面的几步下来,有经验的朋友基本上看出来我们是要用PUSH模式来实现了。
既然我们已经在报表里用到了BigTable,那么我们要传递给报表的数据,也就要整形成B igTable的样子。
也就是说,只要能把来源数据表的数据,整形成B igTable的样子,就能用这一个模板显示出来。
而不用管来源表从哪里来,表名是什么,有几个字段(但是字段数目需要小于等于6),字段名是什么,有多少数据。
NET水晶报表首先要从概念入手,水晶报表(Crystal Report)是业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口。
1、.NET水晶报表的好处1)利用水晶报表可以进行数值求平均值,画图等2)利用水晶报表可以把文件导出不同的格式(word等)2、.NET水晶报表的两种格式1)pull模式,不利用DataSet,直接从数据库中取出数据2) push模式,使用DataSet,利用它进行数据的加载和处理等3. .NET水晶报表使用的库1)水晶报表的引擎(CREnging.dll),作用:合并数据,装换格式2)水晶报表设计器(CRDesigner.dll),作用:设计标题,插入数据等3)水晶报表查看控件(CRWebFormViewer.DLL)4)需要引入的命名空间ing CrystalDecisions.CrystalReports.Engine;ing CrystalDecisions.Shared;4、Pull模式下使用水晶报表1)创建rpt文件2)拖放CrystalReportViewer3)绑定5、读取.NET水晶报表文件3.private void ReadCRV(cryatalReportViewer crv)4. {5. openFileDialog dlg=new OpenFileDialog();6.dlg.Title="打开水晶报表文件";7.dlg.Filter="水晶报表文件(*.rpt)|*.rpt|所有文件|*.*";8. if(dlg.showDialog()==DialogResult.OK)9. {10.crv.ReportSource=dlg.FileName;11. }12. }6. B/S下读取报表的文件13.private void ReadCRV(cryatalReportViewer crv,File file)14. {15. string strName=file.PostedFile.FileName;16. if(strName.Trim()!="")17. {18.crv.ReportSource=strName19. Session["fileName"]=strName;20. }21. }在B/S中要防止数据源的丢失22.priavte void Page_Load(object sender,System.EventArgs e)23. {24. if(Session["fileName"]!=null)25. {26.crv.ReportSource=Session["fileName"].ToString();27. }28. }7. 假如直接从数据库中读取数据采用PULL模式可能出现错误(登录的用户名和密码不对)29.private void ReadCRV(CrystalReportViewer crv,CrystalReport cr)30. {31. ReportDocument reportDoc=new ReportDocument();32. reportDoc.Load(Server.MapPath(cr));//要加载的rpt文件的名字33. //解决登录的问题34. TableLogOnInfo logonInfo = new TableLogOnInfo();35. foreach(Table tb in ReportDoc.Database.Tables)36. {37.logonInfo=tb.LogOnInfo;38.logonInfo.ConnectionInfo.ServerName="(loacl)";39.logonInfo.ConnectionInfo.DatabaseName="Pubs";erId="sa";41.logonInfo.ConnectionInfo.Password="";42. tb.ApplyLogOnInfo(logonInfo);43. }44.crv.ReportSource=reportDoc;45. }8. 采用Push模式,直接在数据源读取46.private void BindReport(CrystalReportViewer crv)47. {48. string strProvider="Server=(local);DataBase=pubs;uid=sa;pwd=";49. CrystalReport cr=new CrystalReport();50. DataSet ds=new DataSet();51. SqlConnection conn=new SqlConnection(strProvider);52. conn.open();53. string strSql="select * from jobs";54. SqlDataAdapter dap=new SqlDataAdapter(strSql,conn);55. adp.Fill(ds,"jobs");56. cr.SetDataSource(ds);57.cr crv.ReportSource=cr;58. }9. 导出水晶报表的文件59.private void ExportCrv(CrystalReport cr)60. {61. DiskFileDestionOptions dOpt=new DiskFileDestionOptions();62.cr.ExportOptions.ExportDestinationType=ExportDestinationType.DiskFile();63.cr.ExportOptions.ExportFormatType= ExportFormatType.PortableDocFormat;64.dOpt.DiskFileName="C:\output.pdf";65.cr.ExportOptions.DestinationOptions=dOpt;66. cr.Export();67.68. }69. private void ExportCrv(CrystalReport cr,string strType,string strPath)70. {71. DiskFileDestionOptions dOpt=new DiskFileDestionOptions();72.cr.ExportOptions.ExportDestinationType=ExportDestinationType.DiskFile();73. switch(strType)74. {75. case "RTF":76.cr.ExportOptions.ExportFormatType=ExportFormatType.RichText;77.dOpt.DiskFileName=strPath;78. break;79. case "PDF":80.cr.ExportOptions.ExportFormatType=ExportFormatType.PortableDocFormat;81.dOpt.DiskFileName=strPath;82. break;83. case "DOC":84.cr.ExportOptions.ExportFormatType=ExportFormatType.WordForWindows;85.dOpt.DiskFileName=strPath;86. break;87. case "XLS":88.cr.ExportOptions.ExportFormatType=ExportFormatType.Excel;89.dOpt.DiskFileName=strPath;90. break;91. default;92. break;93.94. }95.cr.ExportOptions.DestinationOptions=dOpt;96. cr.Export();97.98. }10 B/S下水晶报表的打印99.priavte void PrintCRV(CrystalReport cr)100. {101. string strPrinterName=@"printName";102. PageMargins margins=cr.PrintOptions.PageMargins; 103.margins.bottomMargin = 250;104.margins.leftMargin = 350;105.margins.rightMargin = 350;106.margins.topMargin = 450;107. cr.PrintOptions.ApplyPageMargins(margins);108.cr.PrintOptions.printerName=strPrinterName;109. cr.PrintToPrinter(1,false,0,0)//参数设置为0,表示打印所用页110. }。
Visual Studio 2008/2010 水晶报表快速入门先新建一个Web项目: CrystalWebApp为项目添加新项: CrystalReport1.rpt在弹出的对话框,选择作为空白报表。
用向导当然更方便,但在这里,白手起家或许能更好地理解。
在工具箱选择 Text Object,拖到报表头。
写些字,设置字体之类的。
在属性选项卡设置它的名字为 txtTitle 以供将来程序访问。
水晶报表对于程序员来说其实跟 Repeater 控件是很相似的。
于是需要数据和字段名。
在Repeater 控件中你可以很随意地指定要绑定的字段名。
在程序还没有真正运行之前,这个字段名可以没有任何表的字段名跟它匹配,也可以没有任何类的属性名跟它匹配。
但在水晶报表中,字段名在设计阶段就必须是真实存在的。
还能稍感安慰的是,水晶报表一旦设计好之后,就能像 Repeater 控件那样绑定任意类型的对像。
而不必是设计时指定字段来源的表或类。
所以我们现在要创造些真实存在的字段名……create table TabTest(UserIDint,UserNamenvarchar(50),Age int,Birthday datetime)你可以用 Access 或者 Excel 来创造真实存在的字段名,但我这里是使用 SQL Server。
在 "字段资源管理器" 的 "数据库字段" 上按右键,选择 "数据库专家..."。
在弹出的对话框中,创建新连接==>OLE DB (ADO)(Access 或者 Excel 应点 "数据库文件" 前的 "+" 号)。
在弹出的对话框,选择 "SQL Native Client" 作为提供程序。
按提示一步步地做,直到连上数据库。
选择表 TabTest,把它弄到右边的框中。
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 是双精度值。
水晶报表教程水晶报表是一种常见的数据可视化工具,可以帮助用户将数据转化为易于理解和分析的图表和报表。
下面是一个简单的水晶报表教程,介绍如何使用水晶报表创建和设计报表。
步骤1:安装和启动水晶报表软件首先,您需要安装水晶报表软件。
访问SAP官网下载并安装最新版本的水晶报表软件。
步骤2:连接到数据源打开水晶报表软件后,选择“文件”菜单中的“数据集”选项。
然后选择您要使用的数据源类型(如数据库、Excel 文件等),并创建一个数据集连接。
根据您选择的数据源类型,您可能需要提供相关的连接信息和凭据(例如数据库服务器名称、数据库名称、用户名和密码等)。
步骤3:创建报表一旦成功连接到数据源,您就可以开始创建报表了。
首先,选择“文件”菜单中的“新建”选项,然后选择报表类型(如表格、柱状图、折线图等)。
接下来,从左侧的报表工具栏中选择适当的工具来设计和配置报表布局。
您可以添加和编辑标题、页眉、页脚、数据字段等。
步骤4:配置报表数据在创建报表布局之后,您需要配置报表数据。
从左侧的报表工具栏中选择“数据”选项卡,并选择要显示在报表中的数据字段。
您还可以对数据进行排序、筛选、分组等操作,以进一步定义报表的显示方式。
步骤5:设置报表样式报表的样式设置对于提高可视化效果非常重要。
您可以在报表工具栏中选择“样式”选项卡来为报表选择合适的颜色、字体、边框等样式。
步骤6:预览和保存报表在完成报表设计后,您可以使用预览功能来查看报表的效果。
选择“文件”菜单中的“预览”选项,在预览模式下查看报表。
如果满意报表的效果,选择“文件”菜单中的“保存”选项,将报表保存到指定的位置。
以上就是一个简单的水晶报表教程,希望对您有所帮助。
请注意,水晶报表是一种复杂的工具,还有许多高级功能可以探索和学习。
您可以参考水晶报表的官方文档和教程,深入了解和使用更多功能。
Crystal Reports 9 开发人员技术白皮书Report Designer Component (RDC)和Report Application Server (RAS)的比较概述对于在版本9中的应用开发,Crystal Reports引擎可通过两种不同的报表选择来调用,一种是Crystal Reports Report Designer Component(RDC),另一种是新的Crystal EnterpriseReport Application Server(RAS)。
总的来说,RAS是Crystal Decisions最新、最为强大的对象模型,我们推荐在任何Web应用的开发中都可以使用RAS,而RDC则更多的推荐1在瘦客户端应用2中使用。
对于已经使用RDC的客户来说,需要仔细考虑选择这两种技术中的哪一种。
本文档的目的在于将RDC和RAS进行一个全面的对比比较,说明在进行Web应用开发时,RAS 所具有的强大优势。
1单纯从技术的角度说,RDC仍旧可用于Web应用。
但是,通过本文档,用户可以了解到RAS是一种更为强大、功能更加丰富的解决方案,强烈推荐在任何Web应用开发项目中使用。
2指报表处理均在客户端,而不是服务器端进行的应用。
目录什么是报表应用服务器(RAS)? (3)什么是报表设计组件(REPORT DESIGNER COMPONENT)? (3)报表的维护 (4)存储库 (4)定制化模板 (4)定制化功能 (4)应用开发 (5)处理性能 (5)用户请求 (5)缓存 (5)组件服务器VS 单机服务器 (6)服务器通讯 (6)会话变量 (7)最终用户可交互性 (7)查看器 (7)最终用户的报表创建 (8)W EB发布 (8)打印 (8)其他各种特性 (9)可扩展性 (9)从RDC应用移植至RAS (9)联系我们 (10)什么是报表应用服务器(RAS)?报表应用服务器(RAS)是一个客户端/服务器线条,支持在多层环境下的报表创建、处理和操作。
1.新建一个数据集(DataSet1.xsd),这个数据集就是水晶报表的数据源。
2.设计报表样式,设置数据源时选择你新建的数据集3.在程序中编写代码,加载数据DataSet1 dataset = new DataSet1();SqlDataAdapter ap = new SqlDataAdapter();ap.Fill(DataSet1,"这里的表名必须和新建数据集中的表名一样");4.CrystalReport CrystalReport1 = new CrystalReport();CrystalReport1.setdatasource(ds);就是新建一个CrystalReport文件。
CrystalReport CrystalReport1 = new CrystalReport();你所实力化的类型就是刚才新建的CrystalReport文件,你还要加CrystalReportViewer1.ReportSource = CrystalReport1;CrystalReportViewer1在工具栏中有,它是承载报表文件的控件5.Imports CrystalDecisions.CrystalReports.EngineImports CrystalDecisions.WebImports CrystalDecisions.SharedPublic Class Form1Public tempdb As StringPublic temp As StringDim strqx2(10000)Public constr As String = "uid=sa;pwd=sa2000;database=smallsys;server=oa"Public mycon As New System.Data.SqlClient.SqlConnection(constr)Dim x As IntegerDim xx As IntegerPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadIf mycon.State = ConnectionState.Closed ThenTrymycon.Open()Catch ex As ExceptionMsgBox("数据库连接失败!", MsgBoxStyle.Exclamation, "提示")End TryEnd IfDim mcom As New SqlCommand("select remark from RPTdbinfo", mycon)Dim myr As SqlDataReader = mcom.ExecuteReaderWhile myr.ReadEnd Whilemyr.Close()Dim rpt As New CachedCrystalReport1CrystalReportViewer1.ReportSource = rptTreeView1.Enabled = FalseEnd SubPrivate Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelecttemp = TreeView1.SelectedNode.TextTryokey()Catch ex As ExceptionEnd TryEnd SubSub okey()If temp <> "" ThenDim rdPublishers As New ReportDocument()rdPublishers.Load(tmppath(temp))Dim strUserID As String = ""Dim strPassword As String = ""If Trim(tmpkind(CStr(temp))) = "ERP" ThenstrUserID = "sa"strPassword = "******"rdPublishers.SetDatabaseLogon(strUserID, strPassword)End IfIf Trim(tmpkind(temp)) = "MES" ThenstrUserID = "sa"strPassword = "******"rdPublishers.SetDatabaseLogon(strUserID, strPassword)End IfIf Trim(tmpkind(temp)) = "OA" ThenstrUserID = "sa"strPassword = "******"rdPublishers.SetDatabaseLogon(strUserID, strPassword)End IfCrystalReportViewer1.ReportSource = rdPublishersEnd IfEnd SubFunction tmppath(ByVal temp As String) As StringDim strpathDim dbase As New Data.DataSetDim dc As SqlDataAdapterdc = New SqlDataAdapter("select * from RPTpath where RPTname='" & temp & "'", mycon) dc.Fill(dbase, "tbid")strpath = dbase.Tables("tbid").Rows(0)("RPTpath")‘???Return strpathEnd FunctionFunction tmpkind(ByVal temp2 As String) As StringDim strkindDim dbase As New Data.DataSetDim dc As SqlDataAdapterdc = New SqlDataAdapter("select * from RPTpath where RPTname='" & temp2 & "'", mycon) dc.Fill(dbase, "tbid")strkind = dbase.Tables("tbid").Rows(0)("RPTkind")Return strkindEnd FunctionPrivate Sub 首次运行必读RToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 首次运行必读RToolStripMenuItem.Clickinfor.Show()End SubPrivate Sub 关于ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 关于ToolStripMenuItem.ClickEnd SubPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim strkind As StringDim strqx As StringDim dbase As New Data.DataSetDim dc As SqlDataAdapterdc = New SqlDataAdapter("select * from users where uid='" & Trim(TextBox1.Text) & "'", mycon)dc.Fill(dbase, "tbid")strkind = Trim(dbase.Tables("tbid").Rows(0)("pass"))strqx = Trim(dbase.Tables("tbid").Rows(0)("uqx"))If strkind =Trim(TextBox2.Text) ThenTreeView1.Enabled = Truexx = 0For x = 1 To 10000 Step 5If Mid(strqx, x, 4) <> "" Thenstrqx2(xx) = Mid(strqx, x, 4)xx = xx + 1ElseExit ForEnd IfNextElseMsgBox("Password is wrong!")End If'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TreeView1.Nodes.Clear()Dim deptmp(100)If mycon.State = ConnectionState.Closed Then mycon.Open()Dim mcomm As New SqlCommand("select distinct dep from RPTpath", mycon)Dim myrm As SqlDataReader = mcomm.ExecuteReaderDim k As Integer = 0While myrm.Readdeptmp(k) = Trim(myrm(0))k = k + 1End Whilemyrm.Close()Dim h As Integer = 0Dim y As Integer = 0For h = 0 To k - 1 '部门数量TreeView1.Nodes.Add(Trim(deptmp(h)))' For y = 0 To y = xx - 1 '报表权限数量dc=New SqlDataAdapter("select * from RPTpath where dep='"&Trim(deptmp(h))&"' ", mycon)dc.Fill(dbase, "tbid1")If (dbase.Tables("tbid1").Rows.Count > 0) ThenDim i As IntegerFor i = 0 To dbase.Tables("tbid1").Rows.Count - 1For y = 0 To xx - 1If Trim(dbase.Tables("tbid1").Rows(i)("rptid")) = strqx2(y) Then TreeView1.Nodes(h).Nodes.Add(Trim(dbase.Tables("tbid1").Rows(i)("rptname"))) End IfNextNextEnd Ifdbase.Clear()NextMenuStrip1.TabIndex = 0TreeView1.TabIndex = 9End SubEnd Class'*****************************************************************'*crystal report 的使用示例'*适用版本:9.0'*情况:此为在水晶报表软件中制作报表(rpt文件)的调用方式'*菜单->工程->引用->选择:'*1、Crystal Reports 9 ActiveX Desioner Desion and Runtime Library'*2、Crystal Reports 9 activeX Desioner Run Time Library'*好多朋友有这个问题:报表显示后数据没有刷新,解决方法如下:'*1、在报表的设计界面,菜单“文件”--“选项”-“建立报表”选项卡--把“将数据与报表一起保存”前的勾去掉即可'*2、调用报表对象的DiscardSavedData方法'*****************************************************************Option ExplicitDim Report As New CrystalReport1Dim wjfilesys As FileSystemObject 'FSO 对象,用于文件操作Dim WithEvents CrSecRH As Section '报表显示区对象Dim capp As New CRAXDDRT.Application '报表集合对象Dim carp As New CRAXDRT.Report '报表集合中的报表对象Dim carsubp As New CRAXDRT.Report '报表集合对象中的子报表对象Dim Pic2 As OLEObject '报表对象中的Ole对象Dim mytxt As CRAXDRT.TextObject '报表对象中的Textbox对象Private Sub Combo1_Change() '放大(缩小)比例CRViewer91.Zoom (CInt(Combo1.Text))End SubPrivate Sub Command1_Click() '显示第一页CRViewer91.ShowFirstPageEnd SubPrivate Sub Command10_Click() '打印报表CRViewer91.PrintReportEnd SubPrivate Sub Command11_Click()CRViewer91.showclosebuttonEnd SubPrivate Sub Command2_Click() '刷新报表CRViewer91.RefreshEnd SubPrivate Sub Command3_Click() '显示上一页CRViewer91.ShowPreviousPageEnd SubPrivate Sub Command4_Click() '显示下一页CRViewer91.ShowNextPageEnd SubPrivate Sub Command5_Click() '显示最后一页CRViewer91.ShowLastPageEnd SubPrivate Sub Command6_Click() '在报表内容内搜索If (txtSearch.Text <> "") ThenCRViewer91.SearchForText (txtSearch.Text)End IftxtSearch.Text = ""End SubPrivate Sub Command7_Click() '导入出PDFDim myExportFile As StringmyExportFile = App.Path + "\temp.pdf"If wjfilesys.FileExists(myExportFile) Thenwjfilesys.DeleteFile (myExportFile)End IfReport.ExportOptions.DiskFileName = myExportFileReport.ExportOptions.FormatType = crEFT PortableDocFormat Report.ExportOptions.DestinationType = crEDTDiskFileReport.ExportOptions.PDFExportAllPages = TrueReport.Export (False)End SubPrivate Sub Command8_Click() '导出到ExcelDim myExportFile As StringmyExportFile = App.Path + "\temp.xls"If wjfilesys.FileExists(myExportFile) Thenwjfilesys.DeleteFile (myExportFile)End IfReport.ExportOptions.DiskFileName = myExportFileReport.ExportOptions.FormatType = crEFT Excel97Report.ExportOptions.DestinationType = crEDTDiskFileReport.ExportOptions.PDFExportAllPages = TrueReport.Export (False)End SubPrivate Sub Command9_Click() '导出到WORDDim myExportFile As StringmyExportFile = App.Path + "\temp.doc"If wjfilesys.FileExists(myExportFile) Thenwjfilesys.DeleteFile (myExportFile)End IfReport.ExportOptions.DiskFileName = myExportFileReport.ExportOptions.FormatType = crEFT WordForWindowsReport.ExportOptions.DestinationType = crEDTDiskFileReport.ExportOptions.PDFExportAllPages = TrueReport.Export (False)End SubPrivate Sub Form_Load()Screen.MousePointer = vbHourglassDim cn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim strsql As StringDim i As IntegerIf cn.State = adStateOpen Then cn.Close'SQL SERVER连接方式With cn.Provider = "sqloledb".ConnectionString = "data source=dd;initial catalog=dfd;user id=sa;password=aaa".OpenEnd With'Mdb的连接方式With cn.Provider = "Microsoft.Jet.OLEDB.4.0".ConnectionString = "Data Source=" + App.Path + "\Test.mdb;Persist Security Info=False" .OpenEnd Withstrsql = "select * from carsort"If rs.State = adStateOpen Then rs.CloseWith rs.ActiveConnection = cn.CursorLocation = adUseClient.Open strsql, cn, adOpenDynamic, adLockOptimisticEnd WithSet carp = capp.OpenReport(App.Path + "\CryStalTest.rpt") '取报表对象Set carsubp = carp.OpenSubreport("myhgyp") '取子报表对象Set CrSecRH = carp.Sections("PageHeaderSection1") '取报表头显示区对象Set Pic2 = carp.Sections("PageHeaderSection1").ReportObjects("picture1")'取报表头显示区中的Ole对象Set mytxt = CrSecRH.ReportObjects("mytxt")For i = 1 To carp.Database.Tables.Count '设置报表的数据源If carp.Database.Tables.Item(i).Name = "carsort" Thencarp.Database.Tables(i).SetDataSource rsEnd IfNextFor i = 1 To carsubp.Database.Tables.Count '设置子报表的数据源If carp.Database.Tables.Item(i).Name = "carsort" Thencarsubp.Database.Tables(i).SetDataSource rsEnd IfNextScreen.MousePointer = vbHourglass'第一种设置参数的方式(carp报表集合对象)carp.ParameterFields(1).ClearCurrentValueAndRangecarp.ParameterFields(1).AddCurrentValue ("myhgyp")carp.ParameterFields(2).ClearCurrentValueAndRangecarp.ParameterFields(2).AddCurrentValue (CInt("3"))'第二种设置参数的方式(carp报表集合对象)carp.ParameterFields.GetItemByName("gg").ClearCurrentValueAndRangecarp.ParameterFields.GetItemByName("gg").AddCurrentValue ("myh11" & vbCrLf & "-2gyp") carp.ParameterFields.GetItemByName("ff").ClearCurrentValueAndRangecarp.ParameterFields.GetItemByName("ff").AddCurrentValue (CInt("673"))carp.DiscardSavedDataCRViewer91.ReportSource = carpCRViewer91.ViewReportScreen.MousePointer = vbDefaultCRViewer91.Zoom 100'----------------------Screen.MousePointer = vbDefaultSet wjfilesys = CreateObject("Scripting.FileSystemObject")End SubPrivate Sub CrSecRH_Format(ByVal pFormattingInfo As Object)'格式化报表头显示区中的对象Set Pic2.FormattedPicture = LoadPicture(App.Path & "\tsconfig.bmp") 'changes the pic in the Report Headermytxt.SetText Format(mytxt.Text, "####年##月##日") '格式化TextBox中的文本显示方式End SubPrivate Sub Form_Resize() '设置报表显示区域CRViewer91.Top = 0CRViewer91.Left = 0CRViewer91.Height = ScaleHeightCRViewer91.Width = ScaleWidthEnd Sub###一、在使用自带的水晶报表时,请注册,否则只能使用30次二、使用CrystalReportViewer进行预览,CrystalReportViewer控件允许在应用程序中查看Crystal ReportReportSource属性用于设置要查看哪个报表。
创建简单水晶报表步骤
1:打开VS工具,新建解决方案和项目
2:先创建一个一个ds文件,在ds文件中添加一个datatable,并添加需要显示的列(此处的列和你从数据库中查询出来的字段名称相同),右击属性,选择相应字段的相应类型
3:创建水晶报表文件(rptShow)
选择标准- 在项目数据中找到刚刚创建好的数据集,并选择相应的datatable至右面的文本框中,点击完成,创建好报表文件。
5-1:在我做的报表文件中主要遇到的一个困难是求和;所以这里特别记录下
1:新建【运行总计字段】并取名,这里设计名称为:Sum_Qty
从报表字段中选择需要求和的字段,在汇总类型中选择和即可,此种方法为其一,还有一种方法则是建立好名称后,在公式工作室选择公式--→函数-→选择需要的函数并把相应的字段填充进去,我这里需要的是数量的求和,所以,选择好后是Sum(Qty) 即可,然后直接把之前创建好的名称放在报表文件中。
2:求和不同类型的数据,则需要进行判断,在我的数据库中有金和石两种数据,所以我要对石和金进行统计并求和。
同样需要创建运行总计字段,Sum_Qty,进入到公式工作室,找到刚刚创建好的运行总计字段名称(Sum_Qty),在右面的空白处写上判断
格式:if UOM=’G’ then
金的重量字段
4:调整好相应的格式,再新建一个项目文件(这里是针对winform程序,web的我还没试过,等试了再写)
5:在form表单中拉近一个报表显示控件,如图:
6:编写代码实现报表的显示:
Dim rpt As New rptDetails ------rptDetails 指的前文创建的报表文件名称
Dim ds As New dsSummary.DeatilsQtyDataTable ------dsSummary(创建的数据集文件,DeatilsQtyDataTable 指的是数据集中,你想要使用的数据表,在此使用时,它会自动加上DataTable后缀,其实代表的就是你数据集中的DeatilsQty)
rpt.SetDataSource(DBHelper.GetDetailsSummary(ds, PosCodes, txtFrom.Text.Trim,
txtTo.Text.Trim)) -----调用方法(该方法返回的是dataTable类型)Me.rptShowDetails.ReportSource = rpt ---填充报表
7:完成,显示效果如图:。