2014-09-29 86 views
0

這可能是一個常見問題,但是我在Google搜索後無法找到解決方案。我使用Crystal Report和C#來進行報告。我在子報告中遇到了一些問題: 我想爲Order和OrderDetail創建月度報告。我按照以下代碼完成了它,但是在運行時,它會在子報告中引發異常「報告沒有表格」。你可以幫我嗎?水晶報表子報表沒有表格異常

RpOrder rpt = new RpOrder(); 
RpOrderDetail sub = new RpOrderDetail(); 
DataSet dsOrder = new dsOrder();    
DataSet dsOrderDetail = new dsOrderDetail(); 
dsOrder.Tables.Add(new DataTable()); 
dsOrder.Tables.Add(new DataTable()); 
dsOrderDetail.Tables.Add(new DataTable()); 

foreach(Order nx in listNX) 
{ 
    dsOrder.Tables[0].Rows.Add(
     new object[]{nx.NgayOrder,nx.GetIsNhapString(),nx.NguoiGiaoHang,nx.TongTien} 
    ); 
    foreach(OrderDetail ct in nx.ChiTiets) 
    { 
     dsOrder.Tables[1].Rows.Add(new object []{ 
      ct.HangHoa.TenHangHoa, 
      ct.HangHoa.MaHang, 
      ct.DonGia, 
      ct.SoLuong, 
      ct.SoLuong * ct.DonGia 
     }); 
    } 
}   
rpt.SetDataSource(dsOrder.Tables[0]); 
rpt.Subreports[0].SetDataSource(dsOrder.Tables[1]); 
crystalReportViewer1.ReportSource = rpt; 

回答

1

你試試這個:

rpt.SetDataSource(dsOrder); 

如果上面的行不起作用,請檢查表中的記錄並嘗試打開訂單,首先設置子報表。

+0

我都嘗試,但沒有改變。希望獲得更多幫助 – Andiana 2014-09-30 13:55:06

+0

對不起,我忍不住。 rpt.SetDataSource(dsOrder);應該能夠解決問題,如果返回的表的順序與報告/子報表的順序相同。 – Lan 2014-09-30 15:20:21

+0

你有RpOrderDetail sub = new RpOrderDetail();但你沒有使用它你是否試圖在運行時添加子報表? – Lan 2014-09-30 15:21:17

0

如果子報告加入作了更改之前再進入主報告主報告,請右鍵單擊該子報告,並「重新導入子報表」