CrystalReport水晶报表详细教程
- 格式:ppt
- 大小:1.79 MB
- 文档页数:23
1。
第一步是添加新项CrystalReport12。
在CrystalReport1.rpt面页右键选择:”数据库” ”添加/删除数据库”出现下面对话框:然后点开OLE DB(ADO)的加号,将弹出选择数据库的对话框其中”项目数据”里面的”当前连接”显示的就是OLE DB(ADO)的连接,这样就可以将表添加到右边的”选定的表”中了(切记:不要既从”OLE DB”中选表或命令又从”当前连接”中选,如果你用了数据集,也是一样的道理,否则全提示出”登陆失败”的错误!)3。
字段资料管理器里面”数据库字段”里把字段直接拖到CrystalReport.rpt里面了.布置好布局.4。
回到WebForm1.aspx页面,选择控件CrystalReportViewer将其放到页面上。
5。
代码using CrystalDecisions.Shared;using CrystalDecisions.CrystalReports.Engine;在WebForm1.aspx.cs的Form_Load里面添加代码:TableLogOnInfo logOnInfo = new TableLogOnInfo();ReportDocument rpdMy0= new ReportDocument();logOnInfo.ConnectionInfo.ServerName = "NNN";logOnInfo.ConnectionInfo.Password="dong";logOnInfo.ConnectionInfo.DatabaseName="Lab";erID = "sa";String path = Server.MapPath("CrystalReport2.rpt");rpdMy0.Load(path);rpdMy0.Database.Tables[0].ApplyLogOnInfo(logOnInfo);CrystalReportViewer1.ReportSource = rpdMy0;其中:TableLogOnInfo类是:提供属性,以便检索和设置表连接选项.它有一个连接的属性ConnectionInfo,用来设置与数据库的连接.如上面的ServerName等.生成一个报表文档对象将前面我们做好的那个CrystalReport1.rpt赋给它.在这里要注意的是Database属性!然后把报表对象做为CrystalReportViewer1的数据源.或者,获得数据库的方法改为直接从数据库获得DataSetusing System.Data.SqlClient;using System.Collections.Specialized;string strConn=System.Configuration.ConfigurationSettings. AppSettings["DB"].ToString();using (SqlConnection conn = new SqlConnection(strConn)) {SqlDataAdapter da = new SqlDataAdapter(strSQL,conn); //strSQL是SQL语言"select * from dbo.table1"DataSet ds=new DataSet();da.Fill( ds);CrystalReport1 cr1 = new CrystalReport1();cr1.SetDataSource( ds);CrystalReportViewer1.ReportSource = cr1;}using CrystalDecisions.Shared;using CrystalDecisions.CrystalReports.Engine;在WebForm1.aspx.cs的Form_Load里面添加代码:TableLogOnInfo logOnInfo = new TableLogOnInfo();ReportDocument rpdMy0= new ReportDocument();logOnInfo.ConnectionInfo.ServerName = "NNN";logOnInfo.ConnectionInfo.Password="dong";logOnInfo.ConnectionInfo.DatabaseName="Lab";erID = "sa";String path = Server.MapPath("CrystalReport2.rpt");rpdMy0.Load(path);rpdMy0.Database.Tables[0].ApplyLogOnInfo(logOnInfo);CrystalReportViewer1.ReportSource = rpdMy0;其中:TableLogOnInfo类是:提供属性,以便检索和设置表连接选项.它有一个连接的属性ConnectionInfo,用来设置与数据库的连接.如上面的ServerName等.生成一个报表文档对象将前面我们做好的那个CrystalReport1.rpt赋给它.在这里要注意的是Database属性!然后把报表对象做为CrystalReportViewer1的数据源.或者,获得数据库的方法改为直接从数据库获得DataSetusing System.Data.SqlClient;using System.Collections.Specialized;string strConn=System.Configuration.ConfigurationSettings. AppSettings["DB"].ToString();using (SqlConnection conn = new SqlConnection(strConn)) {SqlDataAdapter da = new SqlDataAdapter(strSQL,conn); //strSQL是SQL语言"select * from dbo.table1"DataSet ds=new DataSet();da.Fill( ds);CrystalReport1 cr1 = new CrystalReport1();cr1.SetDataSource( ds);CrystalReportViewer1.ReportSource = cr1;}using CrystalDecisions.Shared;using CrystalDecisions.CrystalReports.Engine;在WebForm1.aspx.cs的Form_Load里面添加代码:TableLogOnInfo logOnInfo = new TableLogOnInfo();ReportDocument rpdMy0= new ReportDocument();logOnInfo.ConnectionInfo.ServerName = "NNN";logOnInfo.ConnectionInfo.Password="dong";logOnInfo.ConnectionInfo.DatabaseName="Lab";erID = "sa";String path = Server.MapPath("CrystalReport2.rpt");rpdMy0.Load(path);rpdMy0.Database.Tables[0].ApplyLogOnInfo(logOnInfo);CrystalReportViewer1.ReportSource = rpdMy0;其中:TableLogOnInfo类是:提供属性,以便检索和设置表连接选项.它有一个连接的属性ConnectionInfo,用来设置与数据库的连接.如上面的ServerName等.生成一个报表文档对象将前面我们做好的那个CrystalReport1.rpt赋给它.在这里要注意的是Database属性!然后把报表对象做为CrystalReportViewer1的数据源.或者,获得数据库的方法改为直接从数据库获得DataSetusing System.Data.SqlClient;using System.Collections.Specialized;string strConn=System.Configuration.ConfigurationSettings. AppSettings["DB"].ToString();using (SqlConnection conn = new SqlConnection(strConn)) {SqlDataAdapter da = new SqlDataAdapter(strSQL,conn);//strSQL是SQL语言"select * from dbo.table1"DataSet ds=new DataSet();da.Fill( ds);CrystalReport1 cr1 = new CrystalReport1(); cr1.SetDataSource( ds);CrystalReportViewer1.ReportSource = cr1;}。
a. Report Header:此區內容只會顯示在報表第一頁最上面,一般都設為隱藏(Hide),隱藏方式為在Report Header按下滑鼠右鍵選擇[Hide(Drill-Down OK)]Select Data Source視窗後,點選[Browse]按鈕,畫面會出現視窗,此時選擇TTX檔案點選滑鼠右鍵會出現功能表,選擇[New]欄位輸入該參數的名稱後點選[OK]按鈕,此時Field Explorer新增的參數,如下圖此時將此參數拖拉到要放置的位址,即完成此參數的新增,稍後會說明如何透過程式傳選擇要新增的欄位拖曳到Detail 欄位內,即完成報表欄位新增Group的欄位及排序方式,之後按確定,個區塊。
Group Header內可放置GroupGroup Footer內可放置Group結束時所需顯示的資料,如小計Subtotal,Grandtotal,Summary名稱後,按確定後Subtotalubtotal 自動新增到因為是作小計的功能,所以只能選擇資料型態為Number按確定後Subtotalubtotal 自動新增到主要功能為依照欄位值及Group作資料總計、判斷最大值及最小值、統計個數等,增Group名稱後,按確定後Subtotalubtotal 自動新增到的功能主要為資料分開產生但是須顯示到同一報表上或處理時所使用,操作方如欲將入現有報表,則點選[Choose a report],然後點選[Browse]立新報表,則點選[Create a subreport],然後輸入Report Name,點選,此時畫面出現[Subreport Export]視窗,如下圖[Database]欄位,選擇要加入subreport的TTX,然後按[Add]新增。
新增完後,進行下一步,如下圖選擇要在subreport顯示的欄位,按下[Add]後新增即可,完成後按[OK]crystal report ActiveX元件:點選功能表[專案]-[設定引用項目],將[Crystal Report 8。
WinForm中使⽤CrystalReport⽔晶报表——基础,分组统计,⾃定义数据源开篇本篇⽂章主要是帮助刚开始接触CrystalReport报表的新⼿提供⼀个循序渐进的教程。
该教程主要分为三个部分1)CrystalReport的基本使⽤⽅法;2)使⽤CrystalReport对数据进⾏分组求和;3)CrystalReport如何使⽤⾃定义的数据源(如内存中的DataTable表)三个⽅⾯来写。
相信看懂了这个教程之后,对于⾃⼰项⽬中的实现报表这⼀功能,应该就能轻松的应对了。
⼀ CrystalReport模板的制作及显⽰A模板的制作1、右键【项⽬属性】添加⼀个⽔晶报表(在vs中需要安装CrystalReport模块,不同vs版本下载不同的CrystalReport版本:CrystalReport下载链接:)2、添加报表的设计界⾯如下:⼀个报表包括(报表头,页眉,详细资料,报表尾,页眉)5个基本部分。
3、现在我们需要给新建的报表添加⼀个数据源,右键左边的【数据库字段】选择相应的数据源,进⾏绑定。
我这⾥选择的是sqlserver数据库。
4、输⼊数据库的登录信息,然后选择需要绑定的数据库表,除了绑定数据表之外,还可以绑定sql语句查询的结果,以及存储过程和视图,下⾯给出绑定数据库表格,和绑定sql查询。
1)绑定数据库表格2)点击连接下⾯的【添加命令】绑定sql语句。
5、绑定数据库之后在报表左侧的【字段管理器】中就会出现该表以及sql查询结果的的相应表头字段。
6、把相应的字段在报表视图中进⾏布局。
到此⽔晶报表的模板已经做好了。
注意:页眉中的userName,courseName,score是可以更改。
B模板的显⽰1、⾸先在窗体上拖⼀个CrystalReportView控件作为显⽰报表模板。
2、在form_load事件⾥⾯写如下代码:CrystalReport1 cr = new CrystalReport1();//实例化⼀个报表模板this.crystalReportViewer1.ReportSource = cr;//为报表显⽰控件设置数据源3、运⾏报表设计点丑,但是你可以根基⾃⼰的风格进⾏排版设计,如字体,⼤⼩,颜⾊等啦。
可编辑修改精选全文完整版水晶报表CryStalReport使用教程(动态数据绑定)
第一步:添加水晶报表报表
1、右击鼠标,选择水晶报表
2、选择作为空白报表
第二步:添加数据集DataSet 1、右击鼠标,选择数据集
2、单击工具箱,拖拽一个DataTable到右边
3、根据数据表设计好DataTable
第三步:设计报表
1、从工具箱拖拽一个文本对象到页眉,并输入文字
2、选择字段资源管理器,右击数据库字段,选择数据库专家
3、从我的连接中选择MYDataSet到右边的选定的表
4、从左边的数据库字段中拖拽一些需要的字段到右边详细资料
5、展开特殊字段,拖拽一个第N页共M页,到页脚
第四步:添加页面
在页面中添加一个CryStalReportViewer控件
第五步、双击页面,编写数据绑定代码
protected void Page_Load(object sender, EventArgs e)
{
BLL.QueryAllStuService Qas = new BLL.QueryAllStuService();
MyCrystalReport Mcr = new MyCrystalReport();
Mcr.SetDataSource(Qas.QueryAllStudents());
CrystalReportViewer1.ReportSource = Mcr;
}
单击F5,运行效果如下:。
水晶报表初级使用——直接与数据库连接
1、使用步骤
添加报表控件,在工具箱中,拖拽CrystalReportViewer到Default.aspx中。
如下图。
选择数据源,选择数据表源的下拉列表框,在选择新建报表源...,如下图。
新建报表源,当点击新建报表源,是出现对话框,如下图。
给报表控件指定名称,并为报表控件指定报表文件。
由于不存在报表文件,需要新建报表文件。
点击下拉列表,选择新建报表。
出现如下对话框。
创建新报表,给新报表命名。
确定,再确定
出现的对话框,使用报表向导,使用标准。
确定,出现如下对话框。
选择数据源,如下图。
出现如下对话框。
选择如下数据源,如图。
下一步,出现对话框,选择服务器,选择数据库,按情况勾选集成安全项,如下图。
注意:需确保服务器的服务已经打开。
查看方法:开始》所有程序》Microsoft SQL Server2008》配置工具》SQL Server 配置管理器,进入界面,如下图。
查看红框部分状态。
出现对话框,添加表,如下图。
点击下一步,出现对话框,选择要显示的字段,此处全选,如下图。
下一步,出现分组依据对话框,忽略,点击下一步,再点下一步,点击完成。
进入界面,如下图。
编辑数据表的显示样式。
忽略。
点击主报表预览。
如下图
保存,浏览网页如下图,在Toolbar工具条中,可实现报表的导出和打印功能。
同时可不显示工具条,将True改为Faulse设置如下图。
集成水晶报表的方法Crystal Reports是非微软的第三方工具,用于处理数据报表,帮助用户分析和解释重要信息。
使用Crystal Reports可以方便地创建你所能想象的任何报表。
Visual 中集成的Crystal Reports 9(简化版本)赋予.NET平台创建交互式的、高质量展示内容的能力,您可以在Web平台和Windows平台上呈现报表,甚至将Crystal报表作为报表Web服务在Web服务器上发布。
介绍Visual 集成Crystal Reports的资料真是少的可怜,好东东当然不敢独享,所以写下本文,水平有限,还望各位大虾指教。
说了这么多,是不是感觉到.NET的无所不能,如果你正在寻找企业报表开发的新大陆,那你可要打起精神,睁大眼睛继续读下去啦!我们用一个简单的实例来说明在Visual 中怎样玩转Crystal Reports。
(本程序代码已在Visual 简体中文版调试通过。
)实现功能:点击生成报表按钮可根据用户输入的客户ID号生成相应报表(输入0显示所有订单记录),并在CrystalReportViewer控件中预览。
须注意的重点:1、怎样在运行时将Crystal报表与后台数据源连接,即安全数据连接。
(运行时动态连接数据库可灵活的设置数据环境及避免Crystl Reports弹出数据库登陆对话框。
)2、怎样让Crystal报表与界面控件交互首先在MS-SQL Server 2000中建立一名为"MRP"的实例数据库,其中有"客户"和"订单"两张表。
订单表的结构:客户表与订单表可通过ID字段建立一对多关系。
(建库细节请参阅有关书籍)然后,我们就可以在Crystal Report Designer中设计和修改报表(Crystal Report Designer已集成在Visual Studio .NET开发环境内),启动方法如下:1、在Visual 解决方案资源管理器中,右击您的项目以显示快捷菜单。
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 是双精度值。