foreach (DataRow dr in ds1.Tables["py01"].Rows)
{
slipno = dr["p1_slipno"].ToString().Trim();
sql2=" SELECT DISTINCT p2_skno,  p2_precode, p2_kqty, p2_unit, p2_zqty, p2_sumqty, p2_ydate, p2_seq   FROM py02  ";
sql2 +=" WHERE ((p2_skno is not null) OR  (p2_precode is not null)) AND  p2_slipno = '"+slipno+"' ";
sql3="SELECT DISTINCT p6_skno,p6_precode,p6_qty,p6_unit,p6_wdate,p6_re,p6_seq,p6_slipno   FROM py06  ";
sql3+=" WHERE ((py06.p6_skno is not null) OR  (py06.p6_precode is not null)) AND  p6_slipno = '"+slipno+"' AND  p6_seq <= 26 ";
ds2 = conntodatabase.rtnds(sql2,"py02");

ds3 = conntodatabase.rtnds(sql3,"py06");}这个ds2,ds3取数据是否只有最后一个循环有效?达不到显示子报表的效果吧?

解决方案 »

  1.   

    private void button1_Click(object sender, System.EventArgs e)
    {
    this.checkdata();
    string sql ="exec usp_pypy908z1 '"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"','"+textBox5.Text+"','"+textBox6.Text+"'";
    DataSet ds1 = new DataSet();
    try
    {
    ds1=conntodatabase.rtnd(sql);
    }
    catch (System.Exception ex)
    {
    MessageBox.Show(ex.ToString());
    }
    if (ds1.Tables[0].Rows.Count==0 )
    {
    MessageBox.Show("無數據可供你查詢,請重新輸入查詢條件");
    return;
    }
    DataTable dt2 = new DataTable();
    dt2 = ds1.Tables[1];
    DataTable dt3 = new DataTable();
    dt3= ds1.Tables[2];
    DataTable dt4 = new DataTable();
    dt4 = ds1.Tables[3];
    DataTable dt5 = new DataTable();
    dt5 = ds1.Tables[4];
    DataTable dt6  = new DataTable();
    dt6 = ds1.Tables[5];
    DataTable dt7 = new DataTable();
    dt7 = ds1.Tables[6];
    DataTable dt8 = new DataTable();
    dt8 =ds1.Tables[7];
    DataTable dt9 = new DataTable();
    dt9 =ds1.Tables[8];
    d_bypy908z1 cp= new d_bypy908z1();
    cp.SetDataSource(ds1.Tables[0]);
    cp.OpenSubreport("d_bypy908z1_1.rpt").SetDataSource(dt2);
    cp.OpenSubreport("d_bypy908z1_2.rpt").SetDataSource(dt3);
    cp.OpenSubreport("d_bypy908z1_2_1.rpt").SetDataSource(dt4);
    cp.OpenSubreport("d_bypy908z1_3.rpt").SetDataSource(dt5);
    cp.OpenSubreport("d_bypy908z1_4.rpt").SetDataSource(dt6);
    cp.OpenSubreport("d_bypy908z1_5.rpt").SetDataSource(dt7);
    cp.OpenSubreport("d_bypy908z1_6.rpt").SetDataSource(dt9);
    cp.OpenSubreport("d_bypy908z1_7.rpt").SetDataSource(dt8);
    report rpt = new report();
    rpt.SetReportSouce(cp);
    rpt.Show();
    this.Cursor =Cursors.Default;
    }
    搞定了,主要是子報表的相關聯的字段問題,上面說得對,只能得到最後一個徨的數據,後來改為存儲過程可以了