c#winform水晶报表

水晶报表的一般概念

水晶报表的两种模式:

  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;
        }
参考:
『水晶报表』使用 水晶报表 实现打印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值