水晶报表父子表之间的联系

xiezhiqu 2009-04-01 07:29:11
我那了两个报表,一个问题报表,一个回复报表,两个表按问题的ID连接起来。
在问题报表 里点击插入子报表,设置完之后运行,问题出现了:当我点击连接到子报表的链接时,能够 弹出子报表,但子报表里没有数据,而当我分别单独设置报表查看器的报表源时,两个报表都有数据,谁能告诉我这是怎么回事,插入子报表要注意些什么问题?
...全文
203 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiezhiqu 2009-04-02
  • 打赏
  • 举报
回复
刚才那个代码有点出入

//提取打印数据
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"] = "督导员";
}
}
}
}
xiezhiqu 2009-04-02
  • 打赏
  • 举报
回复

//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"] = "督导员";
}
}
}
}
xiezhiqu 2009-04-02
  • 打赏
  • 举报
回复
谢谢了,这个问题解决了,可是我又碰到一个新的问题,就是有关主报表分组,关联子报表的问题,请大家继续赐教!谢谢各位。
水晶报表主报表用了分组功能,子报表中的数据就显示不了?why?
zzxap 2009-04-02
  • 打赏
  • 举报
回复
先把父表用一个表显示出来,子表用一个报表显示出来。

然后再父表的详细资料区-右键-添加子报表-然后设置关联字段 就可以显示父子报表了
fiveandfive 2009-04-02
  • 打赏
  • 举报
回复
关联
阿泰 2009-04-02
  • 打赏
  • 举报
回复
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看看。
阿非 2009-04-01
  • 打赏
  • 举报
回复
很可能是 关联出了问题
wuyq11 2009-04-01
  • 打赏
  • 举报
回复
通过主从表实现
51Crack 2009-04-01
  • 打赏
  • 举报
回复
父子报表的链接肯定没做对!

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧