兄弟姐妹们,快救命呀
我有a,b ,c 三张表,其中a是合同表,b是合同详细表,其中每一样货都有交货期限,c是收货表,起中货物的批次不一样,也就是说,同一样货可能收到多次,现在要设计这样的报表,包括合同号,货名,预定收货日期,实际收货日期(可能有多次),数量差异,金额差异(数量和金额要统计的合同和每一样货),总的数量和金额差异.
郁闷呀!
我有a,b ,c 三张表,其中a是合同表,b是合同详细表,其中每一样货都有交货期限,c是收货表,起中货物的批次不一样,也就是说,同一样货可能收到多次,现在要设计这样的报表,包括合同号,货名,预定收货日期,实际收货日期(可能有多次),数量差异,金额差异(数量和金额要统计的合同和每一样货),总的数量和金额差异.
郁闷呀!
如果有关联字段,就可能你这个表要用到子报表。我给你一段代码:我也是重不同的表中取得数据显示在报表上。private void Fr_khyfb_Load(object sender, System.EventArgs e)
{
try
{
dss=new DataSet(); #region 建立khyfb表结构
DataTable dt=new DataTable("khyfb");
dt.Columns.Add("kh",System.Type.GetType("System.String"));
dt.Columns.Add("rq",System.Type.GetType("System.DateTime"));
dt.Columns.Add("js",System.Type.GetType("System.Int32"));
dt.Columns.Add("ysfs",System.Type.GetType("System.String"));
dt.Columns.Add("yf",System.Type.GetType("System.Decimal"));
dt.Columns.Add("mjyf",System.Type.GetType("System.Decimal"));
dss.Tables.Add(dt);
#endregion //该表khyfb有两种数据
#region 添加自送费用数据
for(int i=0;i<ds.Tables["khyfbzs"].Rows.Count;i++)
{
DataRow dr=dt.NewRow();
dr["kh"]=ds.Tables["khyfbzs"].Rows[i]["ckhbh"];
dr["rq"]=ds.Tables["khyfbzs"].Rows[i]["tccsj"];
dr["js"]=ds.Tables["khyfbzs"].Rows[i]["nchjs"];
dr["ysfs"]=ds.Tables["khyfbzs"].Rows[i]["ysfs"];
dr["yf"]=ds.Tables["khyfbzs"].Rows[i]["yf"];
dr["mjyf"]=System.Convert.ToDecimal(ds.Tables["khyfbzs"].Rows[i]["yf"])/System.Convert.ToInt32(ds.Tables["khyfbzs"].Rows[i]["js"]);
dt.Rows.Add(dr);
}
#endregion #region 添加托运费用数据
for(int j=0;j<ds.Tables["khyfbty"].Rows.Count;j++)
{
DataRow dr=dt.NewRow();
dr["kh"]=ds.Tables["khyfbty"].Rows[j]["khbh"];
dr["rq"]=ds.Tables["khyfbty"].Rows[j]["chtyrq"];
dr["js"]=ds.Tables["khyfbty"].Rows[j]["chjs"];
dr["ysfs"]=ds.Tables["khyfbty"].Rows[j]["ysfs"];
dr["yf"]=ds.Tables["khyfbty"].Rows[j]["hjje"];
dr["mjyf"]=System.Convert.ToDecimal(ds.Tables["khyfbty"].Rows[j]["hjje"])/System.Convert.ToInt32(ds.Tables["khyfbty"].Rows[j]["chjs"]);
dt.Rows.Add(dr);
}
#endregion
//建立报表类
crReportDocument=new khyfhzb();
//帮定到数据库
crReportDocument.SetDataSource(dss);
//设置数据源
crystalReportViewer1.ReportSource = crReportDocument;
crystalReportViewer1.ShowGroupTreeButton=true;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
用查询语句放到ds里面,然后在填入xsd文件,
水晶报表就是和这个xsd文件联在一起的啊(数据源是dss)建立表的时候格式不是都建好了吗?