已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Crystal水晶报表基础知识汇总(一)制作B/S的朋友肯定对Crystal Report绝不陌生 功能强大,方便 我在网上查找了许多关于Crystal Report的资料 对其做了整理、调试 在自己学习的同时,也希望拿出来与大家分享 不足之处请多指教一、Crystal报表的建立水晶报表在应用时分两种方法,分别是拉模式(PULL)、推模式(PUSH) 拉模式:在水晶报表生成时的数据源是从水晶报表文件中的SQL语句从数据库中提取的,在编程时不用重写SQL语句,但要加上登录信息 推模式:在水晶报表生成时的数据源,是用编程时重写水晶报表中SQL语句而生成的dataset对像 也就是说,推模式是用dataset组装水晶报表 水晶报表组件介绍:水晶报表在VS2005中有两种组件:WEB项目中分别是CrystalReportSource,CrystalReportViewer FORM项目里是分别是CrystalReport,CrystalReportViewer CrystalReportSource,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是从工具箱加到页面上的CrystalDocumentcrystalReport11.Load(Application.StartupPath + CrystalReport1.rpt);/运用CrystalDocument读取所需Crystal表单路径; crystalReport11.SetDatabaseLogon(sa, , BENQ-JAY, 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-JAY, UserDatabase);/进行数据库连接,参数一:用户名;参数二:密码;参数三:服务器名;参数四:数据库名 CrystalReportSource1.DataBind();/对CrystalReportSource进行数据绑定 CrystalReportViewer1.ReportSource = CrystalReportSource1;/将预览源指定为CrystalReportSource CrystalReportViewer1.DataBind();/对CrystalReportViewer进行数据绑定推模式(PUSH):在推模式下,必须建立DataSet数据集,用来进行数据源填充 在推模式中编程组装的DataSet里的SQL语句中的字段要与水晶报表里的SQL语句字段一致 WINFORM中建立连接:程序如下:string sql = select * from UserInfor;string conn = server=BENQ-JAY;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.Tablessql); crystalReportViewer1.ReportSource = crystalReport11;WEBFORM中建立连接:程序如下: string sql = select * from UserInfor; string con1 = server=BENQ-JAY;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.Tablessql); CrystalReportSource1.DataBind(); CrystalReportViewer1.ReportSource = CrystalReportSource1; CrystalReportViewer1.DataBind();三、 报表打印水晶报表的CrystalReportViewer中默认配备的工具栏可实现打印功能,但其功能比较单一,无法进行打印机选择。我们可以用代码设置的方法进行Crystal表单的打印功能。WINFORM中的打印:代码如下:private void print_Click(object sender, EventArgs e) try CrystalDecisions.CrystalReports.Engine.ReportDocument rd = new CrystalDecisions.CrystalReports.Engine.ReportDocument();/加载表格的打印属性 rd.Load(E:Projectstest1test1CrystalReport1.rpt);/设定表格路径 rd.PrintOptions.PrinterName = printerList.Text.ToString();/添加打印机 rd.PrintToPrinter(1, true, 0, 0);/设置打印参数 catch (Exception ex) MessageBox.Show(ex.Message.ToString(); private void Form1_Load(object sender, EventArgs e) try PrintDocument prtdoc = new PrintDocument(); string strDefaultPrinter = prtdoc.PrinterSettings.PrinterName;/获取默认的打印机名 foreach (String strPrinter in PrinterSettings.InstalledPrinters) /在列表框中列出所有的打印机, printerList.Items.Add(strPrinter); if (strPrinter = strDefaultPrinter)/把默认打印机设为缺省值 printerList.SelectedIndex = printerList.Items.IndexOf(strPrinter); crystalReport11.Load(Application.StartupPath + CrystalReport1.rpt);/设置报表路径 crystalReport11.SetDatabaseLogon(sa, , BENQ-JAY, Userdatabase);/设置服务器连接信息 crystalReportViewer1.ReportSource = crystalReport11;/绑定报表 catch (Exception ex) MessageBox.Show(ex.Message.ToString(); 代码中,我们实现了水晶报表的选择,在进行水晶报表的添加后,我们可以从水晶报表窗口中看到我们添加的页面信息,从而实现打印预览。此外,我们在一个combobox中实现了对本地打印机的枚举,在进行页面打印之前,可以先对打印机进行选择。从而使打印更加灵活。WEBFORM中的打印:在WEBFORM中实现页面加载与打印选择的方式与WINFORM中基本相同。不同之处在于:文件路径的选择方法上采用server.mappath()方法。在枚举打印机时,我们使用DropDownList进行显示。代码如下:protected void Page_Load(object sender, EventArgs e) try CrystalReportSource1.ReportDocument.Load(Server.MapPath(CrystalReport.rpt); CrystalReportSource1.ReportDocument.SetDatabaseLogon(sa, , BENQ-JAY, UserDatabase); CrystalReportSource1.DataBind(); CrystalReportViewer1.ReportSource = CrystalReportSource1; CrystalReportViewer1.DataBind(); PrintDocument prtdoc = new PrintDocument(); string strDefaultPrinter = prtdoc.PrinterSettings.PrinterName;/获取默认的打印机名 foreach (String strPrinter in PrinterSettings.InstalledPrinters) /在列表框中列出所有的打印机, DropDownList1.Items.Add(strPrinter);/使用DropDownList进行打印机枚举 catch (Exception ex) this.Response.Write(alert( + ex.ToString() + ); protected void Button1_Click(object sender, EventArgs e) CrystalDecisions.CrystalReports.Engine.ReportDocument rd = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); rd.Load(Server.MapPath(CrystalReport.rpt);/从WEB服务器上获取文件物理位置 rd.PrintOptions.PrinterName = DropDownList1.Text.ToString(); rd.PrintToPrinter(1, true, 0, 0);四、 数据导出水晶报表在C/S中的CrystalReportViewer控件可以实现数据的导出功能。包括PDF、XLS、DOC以及RTF格式。在B/S中则无法实现数据导出的多样化。为此,我们通过对参数的设置,完成对水晶报表的数据导出。程序如下:private void ExportCrv(CrystalReport cr, string strType, string strPath) DiskFileDestionOptions dOpt=new DiskFileDestionOption
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理安全十大目标课件
- 在建工地安全课件
- 安全生产课件
- 安全培训课件全部
- 2026年感控工作总结分享
- 项目司机安全教育课件
- 高中心理健康安全教育课件
- 开学前的趣味投壶测试卷及答案解析
- 航空专业岗位面试题及答案大全含山航
- 篮球少年身体素质自测题及答案
- 银联POS机MCC码详表(2025版)
- 自杀自伤应急预案
- 2025年幼儿园厨工考试题及答案
- (已压缩)(3)义务教育语文课程标准日常修订版(2022年版2025年修订)
- 2025河北张家口康保县二人台艺术团招聘专业演职人员18人笔试考试备考题库及答案解析
- 高校专业建设自评报告范文
- 2025年新疆中职政治试卷及答案
- 屠宰工合同(标准版)
- 高考物理一轮复习 热点题型 专题14 动量与动量定理及其应用(原卷版)
- 高中数学必修一高一数学第四章复习与小结公开课教案课时训练练习教案(2025-2026学年)
- 管廊运维专业知识培训课件
评论
0/150
提交评论