1.根据报表的结构字段,建立一个xsd文件,用来存放数据。
2.新建一个报表,注意建立的时候要浏览到该xsd文件,
建好后找到该报表的属性"自定义工具",把原来的
"crystaldecisions.vsdesigner.codegen.reportcodegenerator"
改为"crystaldecisions.vsshell.codegen.reportcodegenerator"
这样就会产生一个按照你报表名命名的zsmxb.cs文件,其实就是下面的类zsmxb
同时建立一个页面,把crystalreportviewer控件放到页面,
并且要在该页面文件的顶部申明一下报表的类,
   public class fr_zsmxb : system.windows.forms.form
   {
        zsmxb crreportdocument;
.........
3.建立报表结构
   dataset dss=new dataset();
   datatable dt=new datatable("zsmxb");
   dt.columns.add("cchbh",system.type.gettype("system.string"));
   dt.columns.add("nglf",system.type.gettype("system.decimal"));
   dt.columns.add("ncf",system.type.gettype("system.decimal"));
   dt.columns.add("nqyf",system.type.gettype("system.decimal"));
   dt.columns.add("nzsf",system.type.gettype("system.decimal"));
   dt.columns.add("ntcf",system.type.gettype("system.decimal"));
   dt.columns.add("ngz",system.type.gettype("system.decimal"));
   dt.columns.add("nzjf",system.type.gettype("system.decimal"));
   dt.columns.add("nylf",system.type.gettype("system.decimal"));
   dt.columns.add("nwxf",system.type.gettype("system.decimal"));
   dt.columns.add("nsy",system.type.gettype("system.decimal"));
   dt.columns.add("nqtf",system.type.gettype("system.decimal"));
   dt.columns.add("nxj",system.type.gettype("system.decimal"));
   dss.tables.add(dt);
注意:这里的datatable dt=new datatable("zsmxb");这句中表名"zsmxb"要和你的xsd文件中的表名要一样,
同时,dt的字段名、类型,都要和xsd文件一样,否则回产生"查询引擎错误"。
4.为这个ds传入数据
   for(int i=0;i<this.ds.tables["zsmxb"].rows.count;i++)
   {
    datarow dr=dt.newrow();
    dr["cchbh"]=this.ds.tables["zsmxb"].rows[i]["cchbh"];
    dr["nglf"]=this.ds.tables["zsmxb"].rows[i]["nglf"];
    dr["ncf"]=this.ds.tables["zsmxb"].rows[i]["ncf"];
    dr["nqyf"]=this.ds.tables["zsmxb"].rows[i]["nqyf"];
    dr["nzsf"]=this.ds.tables["zsmxb"].rows[i]["nzsf"];
    dr["ntcf"]=this.ds.tables["zsmxb"].rows[i]["ntcf"];
    dr["ngz"]=this.ds.tables["zsmxb"].rows[i]["ngz"];
    dr["nzjf"]=this.ds.tables["zsmxb"].rows[i]["nzjf"];
    dr["nylf"]=0;
    dr["nwxf"]=0;
    dr["nsy"]=0;
    dr["nqtf"]=this.ds.tables["zsmxb"].rows[i]["nqtf"];
    dr["nxj"]=system.convert.todecimal(dr["nglf"].tostring())+system.convert.todecimal(dr["ncf"].tostring();    
   dt.rows.add(dr);
   } 
这里的ds是同过查询得到的,这里只是举个例子。
5.把得到的报表数据源dss绑定到水晶报表。
   crreportdocument=new zsmxb();
   crreportdocument.setdatasource(dss);
   crystalreportviewer1.reportsource = crreportdocument; 
新闻热点
疑难解答