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;
新聞熱點
疑難解答