VisualStudio2008+水晶报表的使用

1:打开VisualStudio2008,新建一个Windows窗体应用程序项目,名称可以自定义,选择项目的保存路径,然后确定

刚新建好的窗体应用程序:

 

 

2. 把准备好的水晶报表插件复制到项目中的bin文件夹(不复制也可以,个人习惯),然后在程序中引用这些控件

 

 

(注意,添加的控件不是每个都用得上,但我这里全部引用了)

 3.在程序中的工具栏中的报表栏添加选择项

以上就是添加水晶报表的插件到VS2008中,下面就开始使用水晶报表

 

4.在Form1窗口放一个按钮,命名为”生成报表”,主要是用来点击后,就弹出一个报表的窗口。那么再需新建一个报表的窗口Form2.

 

 

5. 打开Form2窗口,把这个拖进窗口里。

 

 

拖进后,窗口是这样的:

6. 创建水晶报表,在窗口中鼠标右键弹出选项框,选择创建新Crystal报表

我这里只是演示,就不重新命名报表名称了,大家可以根据项目来命名

下面我参考一张报告来设计这个报表,但这个报表有点复杂,我就做简化一点,取其中部分内容显示到报表中,主要是以实现功能为目的。

7.在报表头输入文字

8. 插入线条,把Line 工具拖进入,按需要调整

现在预览看看

以上就是简单的显示报表的功能,那么一般情况下,都是需要连接数据库,从数据库查询的数据展示到报表中的。那么下面这样的功能

9. 在数据库中新建一个数据库Test,新建一个Test表,根据需要建立字段,我这里简单建几个字段。

数据库的Test表的字段如下:

 

在VS2008中需要添加一个叫APP.Config的“应用程序配置文件”,如果是高版本的,默认是添加好的

App.config的代码如下

 

添加一个类SqlHelper的类,用于做连接数据库做增删改查的工具

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 水晶报表
{
    class SqlHelper
    {
        //获取连接字符串
        private static readonly string connstr = ConfigurationManager.ConnectionStrings["connectstr"].ConnectionString;
        /// <summary>
        /// 创建数据库连接
        /// </summary>
        /// <returns>返回一个连接对象conn</returns>
        public static SqlConnection CreateConnection()
        {
            SqlConnection conn = new SqlConnection(connstr);
            conn.Open();
            return conn;
        }
        /// <summary>
        /// 该方法主要用于增删改操作
        /// </summary>
        /// <param name="conn">连接对象</param>
        /// <param name="sql">sql语句</param>
        /// <param name="parameters">sql语句中的参数</param>
        /// <returns>受影响的行数</returns>
        public static int ExecuteNonQuery(SqlConnection conn, string sql, params SqlParameter[] parameters)
        {
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = sql;
                cmd.Parameters.AddRange(parameters);
                return cmd.ExecuteNonQuery();
            }
        }
        /// <summary>
        /// 该方法主要用于增删改操作
        /// </summary>
        /// <param name="sql">sql</param>
        /// <param name="parameters">语句中的参数</param>
        /// <returns>受影响的行数</returns>
        public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = CreateConnection())
            {
                return ExecuteNonQuery(conn, sql, parameters);
            }
        }
        /// <summary>
        /// 首行首列查询
        /// </summary>
        /// <param name="conn">连接对象</param>
        /// <param name="sql">sql语句</param>
        /// <param name="parameters">sql语句中的参数</param>
        /// <returns>返回的是首行首列--object类型</returns>
        public static object ExecuteScalar(SqlConnection conn, string sql, params SqlParameter[] parameters)
        {
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = sql;
                cmd.Parameters.AddRange(parameters);
                return cmd.ExecuteScalar();
            }
        }
        /// <summary>
        ///  首行首列查询
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="parameters">sql语句中的参数</param>
        /// <returns>返回的是首行首列--object类型</returns>
        public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = CreateConnection())
            {
                return ExecuteScalar(conn, sql, parameters);
            }
        }

        /// <summary>
        /// 该方法用来查询
        /// </summary>
        /// <param name="conn">连接对象</param>
        /// <param name="sql">sql语句</param>
        /// <param name="parameters">sql语句中的参数</param>
        /// <returns>返回的是DataTable</returns>
        public static DataTable ExecuteQuery(SqlConnection conn, string sql, params SqlParameter[] parameters)
        {
            DataTable table = new DataTable();
            using (SqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = sql;
                cmd.Parameters.AddRange(parameters);
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    table.Load(reader);
                }
            }
            return table;
        }

        /// <summary>
        /// 该方法用来查询
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="parameters">sql语句中的参数</param>
        /// <returns>返回的是DataTable</returns>
        public static DataTable ExecuteQuery(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = CreateConnection())
            {
                return ExecuteQuery(conn, sql, parameters);
            }
        }
    }
}
SqlHelper代码

 

程序还需要添加一个Configuration插件的的引用

 

10. 下面我做的功能是:在Form1中,点击按钮,就执行查询数据库Test表的所有数据,然后把数据传递给Form2,由Form2的报表显示出来

   现在先创建一个实体text类,代码如下,然后将实体类绑定到报表里,如下图所示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 水晶报表
{
    class Test
    {
        //TestId, T_Circult_Des, T_Device_Type, T_Device_Rating, T_Conductor_Live, T_Conductor_cpc, T_Pro_conductor, T_Polarity
        private int id;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        private string circult_Des;

        public string Circult_Des
        {
            get { return circult_Des; }
            set { circult_Des = value; }
        }
        private string device_Type;

        public string Device_Type
        {
            get { return device_Type; }
            set { device_Type = value; }
        }
        private string device_Rating;

        public string Device_Rating
        {
            get { return device_Rating; }
            set { device_Rating = value; }
        }
        private string conductor_Live;

        public string Conductor_Live
        {
            get { return conductor_Live; }
            set { conductor_Live = value; }
        }
        private string conductor_cpc;

        public string Conductor_cpc
        {
            get { return conductor_cpc; }
            set { conductor_cpc = value; }
        }
        private bool pro_conductor;

        public bool Pro_conductor
        {
            get { return pro_conductor; }
            set { pro_conductor = value; }
        }
        private bool polarity;

        public bool Polarity
        {
            get { return polarity; }
            set { polarity = value; }
        }
    }
}
Test类代码

 

 

 

11.在Form1的按钮事件中,增加如下代码

 

在Form2的窗口代码中,敲入以下代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;

namespace 水晶报表
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            
        }

        DataTable dt1 = new DataTable();//创建一个dt1对象,存储FORM1传来的数据
        public Form2(DataTable dt)//新建一个有参数的构造函数 
        {
            dt1 = dt;
            InitializeComponent();
        }
     
        

        private void Form2_Load(object sender, EventArgs e)//初始化加载
        {
            List<Test> list = DataTableToList(dt1);//创建一个Test对象的集合,把dt1的数据转换成对象存储到集合中
            ReportDocument myReport = new ReportDocument();//创建一个报表对象
            string reportPath = @"D:\c#\水晶报表\水晶报表\CrystalReport1.rpt";//定义报表的路径
            // string reportPath = Application.StartupPath + "\\CrystalReport1.rpt";
            myReport.Load(reportPath);//加载报表
            myReport.SetDataSource(list);//把数据附加到报表对象中
            crystalReportViewer1.ReportSource = myReport;//把对象的数据显示到报表中
        }

        //关系表转对象集合
        private List<Test> DataTableToList(DataTable dt)
        {
            List<Test> testList = new List<Test>();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                Test test = new Test();
                test.Id = Convert.ToInt32(dt.Rows[i]["Id"]);
                test.Circult_Des = dt.Rows[i]["T_Circult_Des"].ToString();
                test.Device_Type = dt.Rows[i]["T_Device_Type"].ToString();
                test.Device_Rating = dt.Rows[i]["T_Device_Rating"].ToString();
                test.Conductor_Live = dt.Rows[i]["T_Conductor_Live"].ToString();
                test.Conductor_cpc = dt.Rows[i]["T_Conductor_cpc"].ToString();
                test.Pro_conductor = Convert.ToBoolean(dt.Rows[i]["T_Pro_conductor"]);
                test.Polarity = Convert.ToBoolean(dt.Rows[i]["T_Polarity"]);
                testList.Add(test);
            }
            return testList;
        }
    }
}
Form2代码

 

12.运行看看数据是否已成功绑定到水晶报表中了

已成功的完成数据的绑定

最后就需要根据需要,为报表添加线条作为边框美化一下,C#+水晶报表的使用原理就是这样的了。我下面就用文本框添加边框的方式添加的

 

 

 运行看看:

 

 

 是不是觉得上面的内容,本来想显示√的,真显示了个“真”,我们可以再水晶报表中写个公式,如果为真,显示√ 如果为假,则不显示

 

同理 如果是true ,真显示OK,false显示“  ”一个空格

 

在数据库中添加多条数据来展示

保存PDF,PDF打开是这样的

 

 总结步骤:

 1. 在程序中新建一个水晶报表的模板

 2. 在程序中新建一个实体类,也就是用来绑定到报表上的数据源

 3. 查询出的数据,放到实体类的集合中,作为报表的源数据,这样就可以显示出来了。

 报表显示的主要代码如下

 

转载于:https://www.cnblogs.com/qq605490312/p/6053121.html

======================================================= == 如果喜欢英文文档的朋友 == Crystal-Reports-2008-For-Dummies.pdf == == 链接: == http://download.csdn.net/download/a6566232/4627865 ======================================================= Crystal Reports 2008 用户指南 Crystal Reports 2008 Windows 2.1 介绍.....................................................31 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 利用 Flash、Flex 和 Xcelsius 实现的高级信息可视化...32 改善的最终用户报表查看体验..........................33 增强的报表设计器功能................................33 新增的灵活部署选项..................................34 灵活的应用程序集成..................................35 2.2 不同之处.................................................35 第 3 章安装 Crystal Reports 2008 37 3.1 安装概述.................................................37 3.2 安装 Crystal Reports 2008................................37 3.3 安装要求.................................................38 3.4 在本地计算机上安装 Crystal Reports.......................38 3.4.1 在本地计算机上安装...................................39 3.5 创建安装点并从网络服务器进行安装.........................45 3.5.1 创建 Crystal Reports 的安装点........................46 4 Crystal Reports 2008 用户指南 3.5.2 从网络安装 Crystal Reports...........................46 3.6 自定义安装...............................................52 3.7 运行无提示安装...........................................54 3.8 设置自定义横幅...........................................59 3.9 升级 Crystal Reports 组件................................60 第 4 章快速开始61 4.1 了解如何使用 Crystal Reports.............................61 4.1.1 示例数据 -- Xtreme.mdb...............................61 4.2 报表创建向导.............................................62 4.2.1 标准.................................................62 4.2.2 交叉表...............................................62 4.2.3 邮件标签.............................................62 4.2.4 OLAP.................................................63 4.3 新用户快速入门...........................................63 4.3.1 开始之前.............................................63 4.3.2 创建报表.............................................64 4.3.3 记录选择.............................................75 4.3.4 分组及排序...........................................79 4.3.5 完成报表.............................................82 4.4 高级用户快速开始.........................................83 4.4.1 选择报表类型及数据源.................................83 4.4.2 在“设计”选项卡上处理报表元素.......................84 4.4.3 使用其他报表功能.....................................86 第 5 章报表设计概念88 5.1 基本报表设计.............................................88 目录5 5.2 决定报表内容.............................................88 5.2.1 说明目的.............................................88 5.2.2 确定报表布局 ........................................89 5.2.3 查找数据.............................................90 5.2.4 操作数据.............................................91 5.2.5 确定打印区域特性.....................................92 5.3 设计纸张原型.............................................94 5.3.1 设计纸张原型.........................................94 第 6 章报表创建基础95 6.1 报表创建选项.............................................95 6.1.1 报表创建向导.........................................95 6.1.2 另一个报表...........................................95 6.1.3 新建报表.............................................96 6.1.4 报表创建向导.........................................96 6.1.5 另一个报表...........................................96 6.1.6 新建报表.............................................96 6.2 选择数据源和数据库字段...................................97 6.2.1 数据库专家...........................................97 6.2.2 字段资源管理器.......................................99 6.3 关于报表设计环境........................................101 6.3.1 “设计”选项卡......................................101 6.3.2 “预览”选项卡......................................105 6.3.3 HTML 预览选项卡.....................................109 6.4 创建新报表..............................................110 6.4.1 选择数据源..........................................110 6.4.2 添加表..............................................111 . . . .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值