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();
}
複数のレポートを生成するためにコードを変更する必要がありますか?
お返事ありがとうございます。実際に私はサブレポートを使用して問題を解決しました。 – Dipto