C# WinForm报表测试

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WinForm 中使用报表
开发平台: 【Windows 8.1】 【Visual Studio 2013】 【Access】 【罗斯文 2007.accdb】 程序运行结果:
1. 新建 C#工程
  新建一个 Windows 窗体应用程序,命名为“WinForm 报表测试”; 将主窗体 name 属性设置为 FormMain,并将 Text 属性设置为 WinForm 报表测试。
2. 添加 Access 数据库连接
  在服务器资源管理器→右键选择数据连接→添加链接, 打开添加链接对话框, 并选择已 经下载的“罗斯文 2007.accdb”文件,待测试连接成功后,关闭对话框; 向窗体中添加一个 ReportViewer 控件和两个 Button 控件,并设置相应的 Name 和 Text 属性; Name reportViewMain buttonRpProducts buttonRpOrders Report Products Report Orders Text
3. 添加数据集
在解决方案资源管理器中右键点击方案并选择添加→新建项, 向解决方案中添加两个数

据集 ProductsDataSet 和 OrdersDataSet。
4. 添加报表
在解决方案资源管理器中右键点击方案并选择添加→新建项, 向解决方案中添加两个报 表文件 ReportProducts.rdlc 和 ReportOrders.rdlc;两个 Report 文件的属性中,“复制到 输出目录”要选为“始终复制到输出目录”
5. 设置报表数据源
在报表数据中→右键点击数据集→添加数据集→打开报表向导; 在报表向导中,分别设置两个报表的数据集属性,如下图
6. 设计报表
在工具箱中将表格工具拖入报表设计器中, 并多添加几列, 并向表格中每一列设置数据 绑定,如下图:

7. 源代码:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. using System; using System.Collections.Generic; using ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.OleDb; namespace WinForm 报表测试 { public partial class FormMain : Form { public FormMain() { InitializeComponent(); } private void FormMain_Load(object sender, EventArgs e) { //this.reportViewerMain.RefreshReport(); } private void buttonRpProducts_Click(object sender, EventArgs e) { DataSets.ProductsDataSet ProductsDS = new DataSets.ProductsDataSet();//定义数据集对象 string StrCommand = "SELECT * FROM 产品";//定义 SQL 命令 string StrRDLCFile = @"Reports\ReportProducts.rdlc";//指定报表文件 string StrReportDS = "RpProductsDataSet";//指定报表使用的报表数据集 GetReport(ProductsDS, StrCommand, StrRDLCFile, StrReportDS, false); } private void buttonRpOrders_Click(object sender, EventArgs e) {

38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86.
DataSets.OrdersDataSet ProductsDS = new DataSets.OrdersDataSet();//定义数据集对象 string StrCommand = "SELECT * FROM 订单";//定义 SQL 命令 string StrRDLCFile = @"Reports\ReportOrders.rdlc";//指定报表文件 string StrReportDS = "RpOrdersDataSet";//指定报表使用的报表数据集 GetReport(ProductsDS, StrCommand, StrRDLCFile, StrReportDS, false); } ///

/// 获取报表 /// /// 选择使用的数据集 /// SQL 命令 /// 选择使用的 RDLC 文件 /// RDLC 文件中使用的报表数据集 /// 报表页面是否横向显示 private void GetReport(DataSet m_DataSet, string StrCommand, string StrReportFile, string StrDataSet,bool isLandScape) { /**************************获取数据**************************/ //定义数据库连接对象 OleDbConnection Connection = new OleDbConnection(); Connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= E:<\\visual studio 2013\\C#> Project\\WinForm 报表测试\\bin\\Debug\\罗斯文 2007.accdb"; //Properties.Settings.Default.罗斯文_2007ConnectionString;//从前面的配置中获取数据库连接字符串 //定义 SQL 命令并设置相应属性 OleDbCommand Command = new OleDbCommand(); mandType = CommandType.Text; mandText = StrCommand; Command.Connection = Connection; //定义 DataAdapter 对象 OleDbDataAdapter DataAdapter = new OleDbDataAdapter(Command); using(Connection) { Connection.Open(); DataAdapter.Fill(m_DataSet.Tables[0]); } /**************************生成报表**************************/ reportViewerMain.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;//使用本地报表模式 reportViewerMain.LocalReport.DataSources.Clear();//清除控件中原有数据 Microsoft.Reporting.WinForms.LocalReport ReportEngine = reportViewerMain.LocalReport;//定义本地报表引擎 ReportEngine.ReportPath = StrReportFile;//指定使用的报表文件 ReportEngine.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource(StrDataSet, m_DataSet.Tables[0]));//加载数据源 /**************************设置预览**************************/ reportViewerMain.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);//预置打印预览模 式 System.Drawing.Printing.PageSettings m_PageSet = reportViewerMain.GetPageSettings();//获取页面设置变量 m_ndscape = isLandScape;//页面是否为横向显示 reportViewerMain.SetPageSettings(m_PageSet);//设置页面 reportViewerMain.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.PageWidth;//预置为页宽显示 reportViewerMain.RefreshReport();//刷新报表 } } }

相关文档
最新文档