2016-05-09 34 views
0

1つのRDLCレポートビューアに複数のレポートを表示する必要があります。私は、ダイナミックイメージでRDLCレポートを使用して単一のレポートを生成しました。しかし、今は同じレポートを生成する必要がありますが、データ/計算が異なる複数の数値が必要です。単一レポート生成のコードを以下に示します。単一のRDLCレポートビューアで複数のレポート(レポートは同じですが、データと計算は異なります)

rdlcTax.Visible = true; 
rdlcTax.Reset(); 
rdlcTax.ProcessingMode = ProcessingMode.Local; 
rdlcTax.LocalReport.DisplayName = "Tax" + dt.Rows[0]["NAME"].ToString(); 
rdlcTax.LocalReport.ReportPath = "Reports/rdlcTaxCertificate.rdlc"; 
ReportDataSource rds = new ReportDataSource("dsTaxCertificate", dt); 
var param = new ReportParameter[] { 
      new ReportParameter("fromDate", fromMonth.Replace("-", " ")), 
      new ReportParameter("toDate", toMonth.Replace("-", " ")), 
      new ReportParameter("rateOfDeduction", rateOfDeduction + "%"), 
      new ReportParameter("name", name), 
      new ReportParameter("address", address), 
      new ReportParameter("refNo", refNo), 
      new ReportParameter("issueDate", issueDate), 
      new ReportParameter("amount", tdsSum.ToString("N", CultureInfo.InvariantCulture).Split('.')[0]), 
      new ReportParameter("amountWord", textInfo.ToTitleCase(int.Parse(tdsSum.ToString()).ToText()) + " Taka Only"), 
      new ReportParameter("imagePath", imagePath, true) 
}; 

rdlcTax.LocalReport.EnableExternalImages = true; 
rdlcTax.LocalReport.SetParameters(param); 
rdlcTax.LocalReport.DataSources.Clear(); 
rdlcTax.LocalReport.DataSources.Add(rds); 
rdlcTax.DataBind(); 
rdlcTax.LocalReport.Refresh(); 

同じレポートビューアで複数のレポートを生成するループを試しましたが、機能しませんでした。レポートには最後のDataTableのデータのみが表示されます。コードを以下に示します。

rdlcTax.Visible = true; 
rdlcTax.Reset(); 
rdlcTax.ProcessingMode = ProcessingMode.Local; 
rdlcTax.LocalReport.DisplayName = "Tax Certificate"; 
rdlcTax.LocalReport.ReportPath = "Reports/rdlcTaxCertificateBulk.rdlc"; 
rdlcTax.LocalReport.EnableExternalImages = true; 
rdlcTax.LocalReport.DataSources.Clear(); 
foreach (DataTable dt in ds.Tables) 
{ 
    var name = dt.Rows[0]["NAME"].ToString(); 
    var address = dt.Rows[0]["ADDRESS"].ToString(); 
    var refNo = dt.Rows[0]["REFERENCE_NO"].ToString(); 
    var issueDate = dt.Rows[0]["ISSUE_DATE"].ToString(); 
    var tdsSum = Math.Round(double.Parse(dt.Compute("Sum(TDS_AMOUNT)", "").ToString())); 

    ReportDataSource rds = new ReportDataSource("dsTaxCertificate", dt); 
    var param = new ReportParameter[] { 
      new ReportParameter("fromDate", fromMonth.Replace("-", " ")), 
      new ReportParameter("toDate", toMonth.Replace("-", " ")), 
          new ReportParameter("rateOfDeduction", rateOfDeduction + "%"), 
      new ReportParameter("name", name), 
      new ReportParameter("address", address), 
      new ReportParameter("refNo", refNo), 
      new ReportParameter("issueDate", issueDate), 
      new ReportParameter("amount", tdsSum.ToString("N", CultureInfo.InvariantCulture).Split('.')[0]), 
      new ReportParameter("amountWord", textInfo.ToTitleCase(int.Parse(tdsSum.ToString()).ToText()) + " Taka Only"), 
      new ReportParameter("imagePath", imagePath, true) 
    }; 

    rdlcTax.LocalReport.SetParameters(param); 
    rdlcTax.LocalReport.DataSources.Clear(); 
    rdlcTax.LocalReport.DataSources.Add(rds); 
    rdlcTax.DataBind(); 
    rdlcTax.LocalReport.Refresh(); 
} 

複数のレポートを生成するためにコードを変更する必要がありますか?

答えて

0

バルクレポートにパラメータを設定する目的は何ですか?これは、要件を理解するようなコードスニペットに基づいています。

テーブル内のすべての列名が同じですか?

foreach (DataTable dt in ds.Tables) 
{ 
**** 
} 
+0

お返事ありがとうございます。実際に私はサブレポートを使用して問題を解決しました。 – Dipto

関連する問題