兄弟姐妹们,快救命呀
我有a,b ,c 三张表,其中a是合同表,b是合同详细表,其中每一样货都有交货期限,c是收货表,起中货物的批次不一样,也就是说,同一样货可能收到多次,现在要设计这样的报表,包括合同号,货名,预定收货日期,实际收货日期(可能有多次),数量差异,金额差异(数量和金额要统计的合同和每一样货),总的数量和金额差异.
郁闷呀!

解决方案 »

  1.   

    这个应该是很好解决的啊,用水晶报表的推模式,把数据放到dataset里面,
    如果有关联字段,就可能你这个表要用到子报表。我给你一段代码:我也是重不同的表中取得数据显示在报表上。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);
    }
    }
      

  2.   

    这里的ds 都是通过sql和存储过程查询得到的。在看看推模式的用法:http://blog.csdn.net/lyb_abiandbel/archive/2005/08/16/455616.aspx
      

  3.   

    放置什么格式的数据?你 的数据不是重数据库库中的吗?
    用查询语句放到ds里面,然后在填入xsd文件,
    水晶报表就是和这个xsd文件联在一起的啊(数据源是dss)建立表的时候格式不是都建好了吗?