动态生成水晶报表

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

这两天学习如何生成动态水晶报表,看了网上的一些资料,觉得讲得都不是很详细。今天晚上做一个小的实例,算是对这两天学习的总结吧。

先让我们来看一下现实现的步骤:

一、新建一个项目:

二、向项目中添加Crystal 报表和DataSet 数据集,报表使用专家向导,在DataSet 数据集中添加一个表,为表添加八列,都使用默认名。

三、为CrystalReport1 设置数据库字段与参数字段。

四:实现代码:

using System;

using System.Collections.Generic;

using ponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

using CrystalDecisions.CrystalReports.Engine;

using CrystalDecisions.ReportSource;

using CrystalDecisions.Shared;

using CrystalDecisions.Windows.Forms;

/**//**//**////

/// 动态生成水晶报表

///

/// 王稳嵩

///

/// 2007-10-23

///

namespace WindowsApplication4

......{

public partial class Form1 : Form

......{

CrystalReport1 CrystalReport11;

ParameterFields paramFields;//定义一个参数字段集对象

ParameterField paramField; //定义一个参数字段列表对象

ParameterDiscreteValue paramDiscreteValue; //定义离散值参数对象

DataSet1 ds1;

SqlConnection conn = new SqlConnection("server=(local);Integrated Security = SSPI; database = Northwind");

public Form1()

......{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

......{

this.cmbSqlstring.Items.Add("select orderid,customerid from orders");

this.cmbSqlstring.Items.Add("select * from Orders");

this.cmbSqlstring.Items.Add("select * from Products");

this.cmbSqlstring.Items.Add("等等");

}

private void butQuery_Click(object sender, EventArgs e)

......{

if (this.cmbSqlstring.Text != "")

......{

if (this.cmbSqlstring.Text == "等等")

......{

MessageBox.Show("兄弟您可真幽默,没有这样的sql语句吧");

return;

}

this.dataGridView1.Columns.Clear();

try

......{

SqlDataAdapter da = new SqlDataAdapter(this.cmbSqlstring.Text.Trim(), conn);

ds1 = new DataSet1();

da.Fill(ds1, "DataTable1");

for (int i = 1; i < 9; i++)

......{

ds1.Tables[0].Columns.Remove("Column" + i.ToString());//删除DataSet1数据集中的预

定义表DataTable1 中预定义的8列columns1 ……;

}

this.dataGridView1.DataSource = ds1.Tables[0];

}

catch (SqlException sqlEX)

......{

MessageBox.Show(sqlEX.Message);

}

catch (Exception Ex)

......{

MessageBox.Show(Ex.Message);

}

}

else

......{

MessageBox.Show("sql语句不能为空");

}

}

private void butPrint_Click(object sender, EventArgs e)

......{

try

......{

if (this.dataGridView1.DataSource != null)

......{

paramFields = new ParameterFields();

if (this.ds1.Tables[0].Columns.Count >= 8)

......{

//查询结果中表的列数大于等于八列时

for (int i =, 1; i < 9; i++)

......{

paramField = new ParameterField();

= "col" + i.ToString(); //设置对象参数字段对象名

相关文档
最新文档