zoukankan      html  css  js  c++  java
  • VS2013自带报表+打印功能

    版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/u010773667/article/details/27540389

    经过了VB版机房收费系统的学习,相信如今说起报表。我们已经不再认为陌生。

    VB打印报表的功能是通过引用第三方控件来实现的,而相对的VS就在VB的基础上完好了这一功能,VS自带报表控件和打印功能。这样就给我们这些编程者带来了非常大的方便。以下就将我做程序的一些小经历来跟大家一起分享一下。


    1,我们右击U层所在目录加入“新建项”。



    2,在弹出的的加入新建项窗体中找到“reporting”,在右面的内容窗体中选中“报表”选项。设置报表的名称。



    3。点击确定后,显演示样例如以下界面。我们能够通过“报表数据”内的选项设置一些内置字段、參数等信息。

    假设界面不显示“报表数据”窗体, 能够通过“视图”——“报表数据(最后一项)”或者“Ctrl+Alt+D”来打开数据窗体。



    4。在上图的“报表数据”窗体中选择“新建”——“数据集”。进入下图界面。选中“数据库”,下一步,。选中“数据集”。进入“数据源设置向导”窗体。



    5。点击“新建连接”,在“加入连接”对话窗体中设置服务器名、username、password、连接到的数据库等信息。然后点击“測试连接”,出现“測试连接成功”。然后确定,一直下一步。



    6,给数据集加入须要应用的数据库对象,表、视图、存储过程等等。

    这里仅仅用到了表,然后确定。



    7,加入完毕数据库对象后加入的对应信息显演示样例如以下界面。

    能够改动数据集名称。



    8,设置完以上步骤后就可以在“报表数据”窗体中看到新建的数据集信息了。



    9,接下来就是设计报表格式了。

    打开左側的工具箱。能够看到图示的“报表项”,文本框、表、矩阵、列表等等。假设没有工具性选项卡,能够“Ctrl+Alt+X”快捷打开。

    文本框用于显示文字、传递參数。表和矩阵则能够用来存放数据。

    不同的是表是针对于“列数固定、行数可变的数据”设计的,而矩形则是针对于“列数与行数均可变”的聚合数据设计的。



    10。依据功能要求。设计完的报表界面如图所看到的。因此这里须要用到的工具是“表”。从表中能够看出。我们最后须要打印的是单条记录的信息。而机房中我们得到的都是整张表的信息。二者的差别在于:在报表绑定数据库的时候绑定的是指定的记录还是整张表。



    11。首先在工具箱中选中工具“表”拖动到报表窗体中。由上图我们能够看到,不同于曾经报表的是,格式发生了变化。事实上非常easy。仅仅需合并单元格就能够了。比如,标题栏。选中标题栏所在行的全部列。鼠标右击,选中“合并单元格”就OK啦~~~在须要显示文本内容的列中直接双击输入信息就可以,须要载入数据库信息的列点击右上角的数据集小图标就可以自己主动载入对应的数据集信息。然后依次选中对应的信息选项就可以。到此。报表就算是设计完了。接下来就是打印了。



    13,首先在项目中新建一个windows窗体。在左側的工具箱中“报表”目录下找到“ReportViewer”选中并将其拖放到窗体上,调整合适的大小与位置。



    14。详细代码实现打印过程:

    <pre name="code" class="csharp"><span style="font-family:KaiTi_GB2312;font-size:18px;">using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlClient ;
    using Microsoft.Reporting.WinForms;
    using System.Configuration;
    using LRepairBill;
    
    
    namespace RepairBill.UI
    {
        public partial class ReportPrint : Form
        {
            public ReportPrint()
            {
                InitializeComponent();
            }
    
            private void ReportPrint_Load(object sender, EventArgs e)
            {
                reportViewer1.Clear();
                string bill_Num = CheckBill.str;
                string connstring = "server=.;database=Repair;uid=sa;pwd=123456";
    
                SqlConnection conn = new SqlConnection(connstring);
    
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select*from repair_table where bill_num=@Bill_Num";
                cmd.Parameters.Add(new SqlParameter("@Bill_Num", bill_Num));
               
                conn.Open();
                cmd.ExecuteNonQuery();
    
                DataTable dt = new DataTable();
                
               try
                {
                    System.Data.SqlClient.SqlDataAdapter ada1 = new System.Data.SqlClient.SqlDataAdapter(cmd);
                    ada1.Fill(dt);
                   
                }
                finally
                {
                    conn.Close();
                    cmd.Dispose();
                    conn.Dispose();
                }
                ReportDataSource rds = new ReportDataSource("DataSet1", dt);
                this.reportViewer1.LocalReport.DataSources.Clear();
    
                this.reportViewer1.LocalReport.DataSources.Add(rds);        
                //为报表浏览器指定报表文件
                this.reportViewer1.LocalReport.ReportEmbeddedResource = "RepairBill.UI.RepairReport.rdlc";  //指定数据集,数据集名称后为表,不是DataSet类型的数据集  
    
                this.reportViewer1.RefreshReport();
                //reportViewer1.clear();
                //this.reportViewer2.RefreshReport();
            }</span>


    
    特别须要注意的是,在为报表浏览器指定报表文件时,假设不确定究竟该怎么写,能够通过以下路径来确定。假设此处出现错误,可能会提示N种报错信息,为了节省时间,所以一開始就要细致确认好。
    



    通过这次的总结,再次验证了“学习是一个重复的过程。这里,仅仅跟大家分享了我用到的部分和遇到的一些问题,很多其它的知识还须要大家自己去学习和运用。

    也希望大家来一起交流。一起积累,一起进步。





  • 相关阅读:
    面向对象OO第15次作业总结
    面向对象OO第9-11次作业总结
    一文讲完最基本的图算法——图的存储、遍历、最短路径、最小生成树、拓扑排序
    字符串匹配问题的KMP算法
    提问回顾与个人总结
    软工结对作业—最长单词链
    软工第1次个人作业
    软工第0次个人作业
    OO最后一次作业
    JSF生存指南P1
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10715058.html
Copyright © 2011-2022 走看看