Я создаю отчет, который пользователь может экспортировать, и я столкнулся с некоторыми трудностями.Я хотел бы получить информацию от кого-то, поскольку я начинаю немного сереть.
Проблема
У меня есть CalcTable
, в которой родительские строки хранятся для CalcTableMonthly
.Для извлечения строк из CalcTable
я использую идентификатор LeaseID
.Тогда из-за наличия нескольких строк в CalcTable
под одним LeaseID
и каждая строка в CalcTable
будет иметь несколько месячных значений в CalcTableMonthly
.
MainReport
получает значения из CalcTable
через LeaseID
.
SubReport1
получает значения из CalcTableMonthly
через снова LeaseID
.Эти значения являются комбинацией всех доступных CalcTable
строк, которые имеют значения в CalcTableMonthly
.
Затем, наконец, SubReport2
получает все объединенные значения за этот месяц.Поэтому я должен передать LeaseID
и Month
из SubReport1.
Так что вы можете видеть, что он работает до уровня 2.
Загрузка страницы
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
// Get LeaseID from query string
sqls_Summary.SelectParameters["LeaseID"].DefaultValue = Request["LeaseID"];
// Set report path
this.rep_Main.LocalReport.ReportPath = "Reports\\CalculationReports\\rpt_Summary_Export.rdlc";
// Set Report DataSources
this.rep_Main.LocalReport.DataSources.Add(new ReportDataSource("dsLeaseCalculations", sqls_Summary));
this.rep_Main.LocalReport.DataSources.Add(new ReportDataSource("dsLeaseCalculationsMonths", sqls_Summary_Months));
this.rep_Main.LocalReport.DataSources.Add(new ReportDataSource("dsLeaseCalculationsViewMonth", sqls_Summary_ViewMonth));
// Set the subreport processing event.
this.rep_Main.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(subReportProccessingFunc);
this.rep_Main.LocalReport.Refresh();
}
}
Событие обработки подотчета
public void subReportProccessingFunc(object sender, SubreportProcessingEventArgs e)
{
sqls_Summary_Months.SelectParameters["LeaseID"].DefaultValue = e.Parameters["prmLeaseID"].Values.First();
e.DataSources.Add(new ReportDataSource("dsLeaseCalculationsMonths", sqls_Summary_Months));
sqls_Summary_ViewMonth.SelectParameters["LeaseID"].DefaultValue = e.Parameters["prmLeaseID"].Values.First();
sqls_Summary_ViewMonth.SelectParameters["Month"].DefaultValue = // What to put here????
e.DataSources.Add(new ReportDataSource("dsLeaseCalculationsViewMonth", sqls_Summary_ViewMonth));
}
Из приведенного выше кода строки sqls_Summary_ViewMonth.SelectParameters["Month"].DefaultValue =
Я не уверен, как обработать.Как я могу получить месяц из текущей строки в отчете RDLC?
Вещи, которые я пробовал
- Поиск в Google схожих проблем, не смог ничего найти
- Установка DefaultValue на
e.Parameters["LiabilityDate"].Values.First()
, не работала, так как не былаподбирая значение.
Вот и все, поскольку я понятия не имею ...
Резюме
Iиметь 1 основной отчет, этот основной отчет имеет подотчет, который имеет другой подотчет.Чтобы получить подотчет, я передаю значение LeaseID только ему.Первый подотчет также требует только LeaseID НО , второй подотчет, который находится в первом подотчете, требует LeaseID И в месяц.Я не уверен, как получить переменную этого месяца в подотчете в RDLC, поскольку она работает в rdl в построителе отчетов, как показано на рисунке ниже , но, к сожалению, не работает, когда я использую ее в ASP.net