多表填充水晶报表的问题,求能实际解决问题的方案!!知道者请进......
http://community.csdn.net/Expert/topic/5288/5288307.xml?temp=.9939081   
 因描述有问题,搞得大家都看不明白,现详细描述一下我的问题,请大家帮助解决,一定给分   
 我有表A含字段(工号,性别,籍贯...),表B含字段(工号,   证书名称...),表C含字段(工号,培训经历..) 
 表A 
 工号   性别      籍贯   ... 
 101         男            广东   
 表B 
 工号   证书名称   ...    
 101      CCNP 
 101      大学毕业证   
 表C 
 工号      培训经历.... 
 101         CCNP培训 
 101         ORACEL培训 
 101         SQL培训   
 现在想把这3个表的数据绑定到水晶报表页面P(只有一页)上, 
 其中[证书资料][培训资料]为子报表,显示如下:   
 报表   
 基本资料 
 ---------------------------------------- 
 工号:101       
 性别:男 
 籍贯:广东   
 证书资料 
 ----------------------------------------- 
 工号   证书名称   ...    
 101      CCNP 
 101      大学毕业证   
 培训资料 
 ----------------------------------------- 
 工号      培训经历.... 
 101         CCNP培训 
 101         ORACEL培训 
 101         SQL培训     
 ------------------------------------------   
 我用如下语名填充水晶报表:   
 da   =   new   SqlDataAdapter( "PS_A ",   cn); 
 da.SelectCommand.CommandType   =   CommandType.StoredProcedure; 
 da.Fill(ds, "XXX ");   
 da   =   new   SqlDataAdapter( "PS_B ",   cn); 
 da.SelectCommand.CommandType   =   CommandType.StoredProcedure; 
 da.Fill(ds, "XXX ");   
 da   =   new   SqlDataAdapter( "PS_C ",   cn); 
 da.SelectCommand.CommandType   =   CommandType.StoredProcedure; 
 da.Fill(ds, "XXX ");   
 CrystalReport1   Cr1   =   new   CrystalReport1(); 
 Cr1.SetDataSource(ds.Tables[ "XXX "]); 
 this.crystalReportViewer1.ReportSource   =   Cr1;   
 但出现问题:证书资料及培训资料显示时出现空格如下: 
 证书资料 
 ----------------------------------------- 
 工号   证书名称   ...    
  <空格>  
 101      CCNP 
 101      大学毕业证   
 培训资料 
 ----------------------------------------- 
 工号      培训经历.... 
  <空格>  
  <空格>  
  <空格>  
 101         CCNP培训 
 101         ORACEL培训 
 101         SQL培训   
 求高手解决方案!!! 
------解决方案--------------------呵呵 
 接分
------解决方案--------------------这样子的啊,写程序可能会比较麻烦 
 你直接在界面中建一个DataSet 
 然后把三个表加进ds中 
 在水晶报表中分成三组分别放三个表的字段 
 把Cr1.SetDataSource(ds.Tables[ "XXX "]); 
 改成Cr1.SetDataSource(ds);   
------解决方案--------------------  使用水晶报表push模式   
 首先可以利用同架构的数据集来设计水晶报表   
 然后再将生成的DS作为参数传进来 SetDataSource(DS)
------解决方案--------------------第一次查A表,FILL XXX,证书和培训都产生一个空值 
 第二次查B表,FILL XXX,培训产生两个空值