2013-06-20 11 views
5

を持つすべてのサブCrystalレポートのバインド、私は年とメインレポート、紙、対象を結合して、でサブを報告し、私はその年と紙に関連書籍を示しています。のCrystal Reportsを使用して同じデータ

私の問題は、サブレポートでは、私は各論文について同じデータを見ているということです。このデータテーブルを1つのデータセットで使用します。

string query = "Select subjectname ,subjectnamehindi,year, Paper , bookID From paper where unistrID='" + uniid + "' order by year,Optional,paper"; 
cmd = new SqlCommand(query, con); 
SqlDataAdapter da = new SqlDataAdapter(cmd); 
DataSet dsp = new DataSet(); 

da.Fill(dsp, "Main"); 
if (dsp.Tables[0].Rows.Count>0) 
{ 
    rpt.Load(Server.MapPath("Crys.rpt")); 
    rpt.SetDataSource(dsp.Tables[0]); 

    //Get sub report and assign datatable1 to that report 
    foreach (ReportObject repOp in rpt.ReportDefinition.ReportObjects) 
    { 
     if (repOp.Kind == ReportObjectKind.SubreportObject) 
     { 
      string SubRepName = ((SubreportObject)repOp).SubreportName; 
      ReportDocument subRepDoc = rpt.Subreports[SubRepName]; 
      i = 0; 
      c = dsp.Tables[0].Rows.Count; 
      DataSet dsp1 = new DataSet(); 
      while (c > 0) 
      { 
       string bookid = dsp.Tables[0].Rows[i]["bookID"].ToString(); 

       query = "SELECT BookCode, dbo.PaperBook.SalePrice, BookName, DisplayAuthorName FROM dbo.MasterTitle INNER JOIN dbo.PaperBook ON dbo.MasterTitle.BookCode = dbo.PaperBook.BookCode where bookID='" + bookid + "'"; 
       cmd = new SqlCommand(query, con); 
       da = new SqlDataAdapter(cmd); 

       da.Fill(dsp1, "Sub"); 
       subRepDoc.SetDataSource(dsp1.Tables[0]); 
       c = c - 1; 
       i = i + 1;     
      }    
     } 
    } 

    CrystalReportViewer1.ReportSource = rpt; 
    CrystalReportViewer1.DataBind(); 
    // Assign report to the crystal report viewer  
} 

はどのように取得することができ、それぞれの紙の正しいデータを表示するサブレポート:

私は、次のコードを使用していますか?しようとする

+0

質問に結果の一部を含めることはできますか? –

+0

私は確かに分かりませんが、あなたのレポートは 'year'と' paper'の間にデカルト積を生成しているかもしれません。 –

答えて

0

2物事:

1)をクリア既存のデータソース、サブレポートのデータソースを設定する前に:

subRepDoc.DataSourceConnections.Clear(); 

2)データセットテーブルの一意の名前を使用します。

da.Fill(dsp1, "UNIQUENAME"); 
0

サブレポートを年と用紙でフィルタリングして、サブレポートでどのように表を再度バインドするかを確認してください。

関連する問題