博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
水晶报表
阅读量:4599 次
发布时间:2019-06-09

本文共 2932 字,大约阅读时间需要 9 分钟。

 

      今天学做人事管理系统,需要用到打印报表的功能,水晶报表是一般比较常用的了,杨老师讲的也很细心。

水晶报表的基本使用步骤:

1,下载并安装水晶报表for 2010(因为我VS用的是2010)

2,工具箱新建选项卡“水晶报表”,在【WPF组件】选择卡下添加水晶报表for vs2010提供的控件(程序集都以SAPBusinessObjects开头)。如图:

把SAPBusinessObjects开头的全打上勾。

3,wpf项目所用的“目标框架”必须改成“.Net Framework4”,不能是4 Client。要给app.config节点的startup增加一个属性:useLegacyV2RuntimeActivationPolicy="true", 否则运行会报异常FileNotFoundException。如图:

把默认的改成改成“.Net Framework4”。

4、项目中,新建项“Reporting”→CrystalReport,比如命名为MyCrystalReport1.rpt,接着对报表进行设计

1)“报表头”是整个报表的头部(如果多页的话只在第一页显示),“页眉”是每页头部显示的内容,“页脚”是每页尾部显示的内容,“详细资料”是每一条数据的循环显示(类似于DataGrid、ListBox),“报表尾”用来在报表的尾部显示总和、平均值等汇总信息。

2)“工具箱”中可以拖放“文本对象”显示固定文本,“线条对象”和“框对象”画线或者画框。
3)参数字段:在“参数字段”上点右键,选择“新建”,给参数取名字和类型,然后把参数字段拖放到报表上。在代码中通过SetParameterValue设定参数的值,注意放到SetDataSource之后,否则会弹出输入参数值的对话框
4)“特殊字段”可以拖放打印日期、页码、总页数等。

5、在项目中把Model类和取数据的方法建好,然后项目要保证编译通过。

6、在“数据库字段”上点右键选择“数据库专家”,在对话框中选择“项目数据”→“.Net objects”,选中Model类(如果选不到类,说明没编译OK),然后就可以在左边的“数据库字段”中拖放字段到“详细资料”中,会在“页眉”中自动增加对应字段头,可以在“页面”的头部字段中点右键“编辑文本对象”把显示改为中文。

7、增加“总值”、“平均值”之类,在“字段资源管理器”的“运行总计字段”新建,在对话框中选择字段和汇总类型
公式字段,在“公式字段”上点右键“新建”,选择字段和编辑公式,然后就可以用了。
8、
在窗口中放置一个CrystalReportsViewer控件(不要设定Margin和width、height,会自动占全屏),例如名字为CrystalReportsViewer1
执行方法获取数据,然后把数据设置为数据源(MyCrystalReport1是rpt文件的类名)
MyCrystalReport1 rpt = new MyCrystalReport1();
rpt.SetDataSource(new PersonDAL().ListAll());

我的小例子:

报表设置:

代码:

1 private void btnQuery_Click(object sender, RoutedEventArgs e) 2         { 3             int year = Convert.ToInt32(txtYear.Text); 4             int month = Convert.ToInt32(txtMonth.Text); 5             Guid deptId = (Guid)cmbDept.SelectedValue; 6  7             if (new SalarySheetDAL().IsExit(year, month, deptId)==false) 8             { 9                 MessageBox.Show("还未生成对应的工资表");10                 return;11             }12 13             SalarySheetItem[] items = new SalarySheetDAL().GetSalarySheetItems(year, month, deptId);14 15             SalarySheetItemRpt[] rptItems = new SalarySheetItemRpt[items.Length];16 17             for (int i = 0; i < items.Length; i++)18             {19                 SalarySheetItemRpt rptItem = new SalarySheetItemRpt();20                 SalarySheetItem item = items[i];21                 rptItem.BaseSalary = item.BaseSalary;22                 rptItem.Bonus = item.Bonus;23                 rptItem.Fine = item.Fine;24                 rptItem.Other = item.Other;25                 rptItem.EmployeeName = new EmployeeDAL().GetById(item.EmployeeId).Name;26                 rptItems[i] = rptItem;27             }28 29             SalarySheetReport report = new SalarySheetReport();30             report.SetDataSource(rptItems);31             report.SetParameterValue("年",year);32             report.SetParameterValue("月", month);33             report.SetParameterValue("部门名称", cmbDept.Text);34             reportsViewerItems.ViewerCore.ReportSource = report;35         }

最后看看运行的效果吧。

这样一个简单的水晶报表就完成了。

 

 

 

转载于:https://www.cnblogs.com/ningrongjiang/archive/2013/06/10/3130817.html

你可能感兴趣的文章
GNU Radio入门之旅
查看>>
将数据库所有表和字段首字母变成大写
查看>>
如何在vue项目中使用md5.js及base64.js
查看>>
最长公共子序列 Lcs
查看>>
关于虚拟空间上传没有权限问题 只要更改一下system.web 就可以
查看>>
C#知识点总结【1】
查看>>
BZOJ 1257: [CQOI2007]余数之和
查看>>
20155235 2016-2017-2 《Java程序设计》第六周学习总结
查看>>
H3C VLAN 配置
查看>>
BZOJ 1077: [SCOI2008]天平
查看>>
第一天
查看>>
团队冲刺第十天
查看>>
Gradle用户指南
查看>>
iOS审核策略重磅更新:Guideline 2.1批量拒审
查看>>
给 vue项目添加ESLint
查看>>
Swift3.0 功能一(持续更新)
查看>>
HexColor
查看>>
Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
查看>>
你会用swift创建复杂的加载动画吗(1)
查看>>
javabean转换为map对象
查看>>