水晶报表新建多表数据源

猴哥猴哥你真了不起 2010-07-21 09:38:38
表两个,其中自己建表一个,没用fill方法。字段的内容我自己添加上去的。将两个表放在一个数据集里面
    DataSet ds = new DataSet();
DataTable db = new DataTable();
DataTable ctb = new DataTable();
......
ds.Tables.Add(db);
ds.Tables.Add(ctb);

reportPath = reportPath + @"MoPriceReport.rpt";
myReport.Load(reportPath);
myReport.SetDataSource(ds);//我绑定数据集
crystalReportViewer1.ReportSource = myReport;



想了好久 没想出问题。
当我单独绑定一个表的时候,没问题
我单独绑定第二个表的时候 没数据 我按照平时的做法没找到问题
寻求帮助
...全文
405 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
东莞寻香苑 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jiang_min_ 的回复:]

C# code

public ReportDocument FillReportData(DataSet Ds,ReportDocument oReport)
{
this.SetData(Ds, oReport);
foreach (ReportDocument oSubReport in oReport.Subreports……
[/Quote]
就是把dataset中每个表绑定到水晶报表的相应表(如果有子表,也绑定到相应的子报表)

引用你上面的代码就是:
reportPath = reportPath + @"MoPriceReport.rpt";
myReport.Load(reportPath);
//myReport.SetDataSource(ds);//我绑定数据集
//crystalReportViewer1.ReportSource = myReport;
crystalReportViewer1.ReportSource= FillReportData(ds,myReport);
阿泰 2010-07-21
  • 打赏
  • 举报
回复
无关联关系的多表
可以考虑将一个表放在主表,另外的表分别放在独立的子报表中。
  • 打赏
  • 举报
回复






  • 打赏
  • 举报
回复




如 泰哥 所说 我的两个表没有关联关系
佩服

那么我应该如何改呢?没有关联关系 该如何放多个表呢? 谢了

阿泰 2010-07-21
  • 打赏
  • 举报
回复
报表中使用了两个表的话,报表会自动给两个表添加关联关系
如果你的两个表的数据本身没有关联关系,那肯定是出不来数据
或者是有关联关系,但是水晶报表定义的关联字段不对,也出不来数据。

如果两个表确实没有使用关系,那么如果报表上用到了两个表的字段,那么数据会翻倍。
如果表1有数据,表2没数据,具体问题应该出在模板上面,建议模板截图出来看看。
  • 打赏
  • 举报
回复

public ReportDocument FillReportData(DataSet Ds,ReportDocument oReport)
{
this.SetData(Ds, oReport);
foreach (ReportDocument oSubReport in oReport.Subreports)
this.SetData(Ds, oSubReport);
return oReport;
}
private void SetData(DataSet Ds, ReportDocument oReport)
{
foreach (Table oTable in oReport.Database.Tables)
oTable.SetDataSource(Ds.Tables[oTable.Name.ToString()]);
}


看不懂 能讲下吗?
东莞寻香苑 2010-07-21
  • 打赏
  • 举报
回复
把多表填入水晶报表,请参考
  • 打赏
  • 举报
回复

我单独绑定是单独绑定每一个datatable 做测试用的

模板里用到了两个表
表的字段跟 这两个表的字段一样
阿泰 2010-07-21
  • 打赏
  • 举报
回复
dataset里的两个表,与报表模板的关系是怎样的?

模板里用到了两个表还是一个表?
你的“单独绑定”是怎么操作的?
  • 打赏
  • 举报
回复

reportPath = reportPath + @"MoPriceReport.rpt";
myReport.Load(reportPath);
myReport.SetDataSource(_db);
myReport.SetParameterValue("外包成本",_waibao);
myReport.SetParameterValue("加班成本", _jiaban);
crystalReportViewer1.ReportSource = myReport;

多谢泰 哥 ,搞定
阿泰 2010-07-21
  • 打赏
  • 举报
回复
1: 从现在的报表里,把第2个表点掉
2:如何创建和使用参数,请参考

【水晶报表内功心法】--信手拈来,掌控对象 [推荐]

中的关于参数的一节。
  • 打赏
  • 举报
回复
多谢 指导,以前对参数字段不太会用,
现在还不是很会
不会影响对主表的数据绑定吧
泰哥 发个文章指导下
阿泰 2010-07-21
  • 打赏
  • 举报
回复
主表只要一个表,
可以把报表页脚那个表的数据,做成3个参数传递进去。放在报表页脚的位置就行了。
  • 打赏
  • 举报
回复
试了下 还不行。
我不想用子报表,新建表 只用一行数据作为统计数据的基本内容

想做成如此效果

http://hi.csdn.net/space-3473-do-album-picid-594903.html

看看有什么好方法吗?

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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