我那了两个报表,一个问题报表,一个回复报表,两个表按问题的ID连接起来。
在问题报表 里点击插入子报表,设置完之后运行,问题出现了:当我点击连接到子报表的链接时,能够 弹出子报表,但子报表里没有数据,而当我分别单独设置报表查看器的报表源时,两个报表都有数据,谁能告诉我这是怎么回事,插入子报表要注意些什么问题?

解决方案 »

  1.   


    //DataSet1 是一个强数据集,报表绑定的数据源就是它,提取数据这方面是没有问题的,我试过把crystalReportViewer1的ReportSource 分别设置为fbb和zbb,都能够显示出数据,但关联了父子表就不行了,大家看看有什么问题,拜托了。
    //提取打印数据
            private void buttonX11_Click(object sender, EventArgs e)
            {
                if (radioButton1.Checked == true)//按院系——年级——班级
                {
                    tchf();//这个是提取子报表的数据
                    SqlConnection con = ff.getcon();
                    DataSet1 ds = new DataSet1();
                    SqlDataAdapter da = new SqlDataAdapter("execute jxdd_tj_yxnjbj '" + comboBoxEx4.SelectedValue.ToString() + "','" + comboBoxEx5.SelectedValue.ToString() + "'", con);
                    da.Fill(ds, "wtnjb");                //wtnj fbb = new wtnj();
                    //fbb.SetDataSource(ds);
                    //crystalReportViewer1.ReportSource = fbb;
                    CrystalReport1 mm = new CrystalReport1();
                    mm.SetDataSource(ds);
                    crystalReportViewer1.ReportSource = mm;
                   
                }
                else
                {
                    //if (radioButton2.Checked == true)//按院系——考研室——教师
                    //{
                       
                   // }
                }
            }        private void tchf()
            {
                SqlConnection con = ff.getcon();
                SqlDataAdapter da = new SqlDataAdapter("execute jxdd_tj_hf", con);
                DataSet1 ds = new DataSet1();
                da.Fill(ds, "hfb");            foreach (DataRow row in ds.Tables["hfb"].Rows)
                {
                    if (row["jsbh"].ToString() == "")
                    {
                        row["hfrlb"] = "学生";
                    }
                    else
                    {
                        if (row["sfdd"].ToString() == "False")
                        {
                            row["hfrlb"] = "教师";
                        }
                        else
                        {
                            row["hfrlb"] = "督导员";
                        }
                    }
                }
            }
      

  2.   

    刚才那个代码有点出入//提取打印数据
            private void buttonX11_Click(object sender, EventArgs e)
            {
                if (radioButton1.Checked == true)//按院系——年级——班级
                {
                    tchf();
                    SqlConnection con = ff.getcon();
                    DataSet1 ds = new DataSet1();
                    SqlDataAdapter da = new SqlDataAdapter("execute jxdd_tj_yxnjbj '" + comboBoxEx4.SelectedValue.ToString() + "','" + comboBoxEx5.SelectedValue.ToString() + "'", con);
                    da.Fill(ds, "wtnjb");                wtnj fbb = new wtnj();
                    fbb.SetDataSource(ds);
                    crystalReportViewer1.ReportSource = fbb;
                    //CrystalReport1 mm = new CrystalReport1();
                    //mm.SetDataSource(ds);
                    //crystalReportViewer1.ReportSource = mm;
                   
                }
                else
                {
                    if (radioButton2.Checked == true)//按院系——考研室——教师
                    {
                       
                    }
                }
            }        private void tchf()
            {
                SqlConnection con = ff.getcon();
                SqlDataAdapter da = new SqlDataAdapter("execute jxdd_tj_hf", con);
                DataSet1 ds = new DataSet1();
                da.Fill(ds, "hfb");            foreach (DataRow row in ds.Tables["hfb"].Rows)
                {
                    if (row["jsbh"].ToString() == "")
                    {
                        row["hfrlb"] = "学生";
                    }
                    else
                    {
                        if (row["sfdd"].ToString() == "False")
                        {
                            row["hfrlb"] = "教师";
                        }
                        else
                        {
                            row["hfrlb"] = "督导员";
                        }
                    }
                }
            }
      

  3.   

    tchf();
                    SqlConnection con = ff.getcon();
                    DataSet1 ds = new DataSet1();
                    SqlDataAdapter da = new SqlDataAdapter("execute jxdd_tj_yxnjbj '" + comboBoxEx4.SelectedValue.ToString() + "','" + comboBoxEx5.SelectedValue.ToString() + "'", con);
                    da.Fill(ds, "wtnjb");                wtnj fbb = new wtnj();
                    fbb.SetDataSource(ds);
                    crystalReportViewer1.ReportSource = fbb;
    你只传了一个da.Fill(ds, "wtnjb");的表进去tchf();过程里的数据没有传到报表里,注意你用了两次DataSet1 ds = new DataSet1();
    你可以考虑把ds做成一个public看看。
      

  4.   

    谢谢了,这个问题解决了,可是我又碰到一个新的问题,就是有关主报表分组,关联子报表的问题,请大家继续赐教!谢谢各位。
    水晶报表主报表用了分组功能,子报表中的数据就显示不了?why?