c#winform水晶报表

来源:互联网 发布:压缩文件夹 linux 编辑:程序博客网 时间:2024/05/18 01:34

水晶报表的一般概念

水晶报表的两种模式:

  1. 拉 PULL:设置好数据连接之后,使用水晶报表文件中所使用的获得数据的方式,由水晶报表自己解决数据获取操作。
  2. 推 PUSH:使用DataSet装载数据,然后填充到水晶报表中,再按照水晶报表的格式来展示。

数据库:PostgreSQL 

引用头文件:

using Npgsql;//下载并引用Npgsql.dll
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;


添加三个文件,一个Form1窗体,一个CrystalReport水晶报表,一个DataSet1数据集

首先新建一个结果集,格式为“DataSet1.xsd”,把我们的动态结果集和传给这个文件,而且在xsd中加入我们要使用的列(注意:这里加入的列名称必须和我们后台查询时使用的列名一致),然后在报表文件中选择数据源,加入我们需要使用的数据库字段,就建立了后台结果集和前台报表的连接,就可以解决“该报表不包含表”的错误。(将要显示的字段添加到CrystalReport水晶报表中)

        private NpgsqlConnection npgsqlCon = null;        private NpgsqlCommand npgsqlComd = null;private void button1_Click(object sender, EventArgs e)        {            string strConnection = "Server=127.0.0.1;Port=5432;User Id=sa;Password=sa;Database=E2COS_LS_DB;";            string sqlCMD = "SELECT * FROM \"DiagInfo\" ";            DataSet ds=QueryDB(sqlCMD,strConnection);//这里也可以写成DataSet1,            ReportDocument myReport = new ReportDocument();            string reportPath = @"E:\code\solimi\solimi\CrystalReport1.rpt";            myReport.Load(reportPath);            //绑定数据集,注意,一个报表用一个数据集。            myReport.SetDataSource(ds);            crystalReportViewer1.ReportSource = myReport;//Form1窗体上拖入crystalReportViewer控件,预览        }public DataSet QueryDB(string sqlCMD, string strConnection)        {            DataSet ds = new DataSet();            DataTable dt = new DataTable();            if (npgsqlCon == null)            {                npgsqlCon = new NpgsqlConnection(strConnection);                npgsqlCon.Open();            }            else            {                if (npgsqlCon.State != ConnectionState.Open)                {                    npgsqlCon = new NpgsqlConnection(strConnection);                    npgsqlCon.Open();                }            }            NpgsqlDataAdapter da = new NpgsqlDataAdapter(sqlCMD, npgsqlCon);            ds.Reset();            da.Fill(ds, "DiagInfo"); //            da.Dispose();            return ds;        }
参考:
『水晶报表』使用 水晶报表 实现打印
“该报表不包含表”解决方法

0 0
原创粉丝点击