第一次使用水晶报表到现在已经4个月了!!期间看过很多文章,但是都是不太详细的介绍!!使我在学习中充满了无奈,因此本着我为人人、人人为我的原则把自己的经验介绍给别的网友。
(1)数据填充
//数据库连接字符串
protected string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "//DB.mdb";
/// <summary>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param name="SQLString"></param>
/// <param name="fillString">填充名</param>
/// <returns></returns>
public DataSet Query2(string SQLString,string fillString)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
OleDbDataAdapter command = new OleDbDataAdapter(SQLString, connection);
command.Fill(ds, fillString);
}
catch (System.Data.OleDb.OleDbException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
/// <summary>
/// 查询所有数据
/// </summary>
public DataSet selectPJ()
{
string sql = "";
DataSet ds = new DataSet();
sql = "select * from piaoju";
try
{
ds = this.Query2(sql,"piaoju"); //这个影射填充名非常重要一定要和表名相同
}
catch (Exception e)
{
MessageBox.Show(e.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
return ds;
}
(2)PUSH水晶报表
ReportDocument reportDocument1 = new ReportDocument()
reportDocument1.Load(Application.StartupPath + "//piaoju.rpt"); //水晶报表绝对地址
ds = selectPJ();
reportDocument1.SetDataSource(ds); //填充数据到水晶报表
reportDocument1.Refresh();
PageMargins pMaargins; //设置边距
pMaargins = reportDocument1.PrintOptions.PageMargins;
pMaargins.topMargin = int.Parse(this.txtset05.Text);
pMaargins.bottomMargin = 0;
pMaargins.leftMargin = int.Parse(this.txtset06.Text);
pMaargins.rightMargin = 0;
reportDocument1.PrintOptions.ApplyPageMargins(pMaargins);
//reportDocument1.PrintOptions.PrinterName = "Microsoft Office Document Image Writer"; //打印机名
reportDocument1.PrintToPrinter(1, false, 0, 0); //打印
(3)详细说明
在做单独报表文件时使用A表那么填充时select 到的数据也必须是A表结构,并且在使用Fill进行填充时也必须和报表文件使用的表名一样,否则就不能正常显示数据内容。