Мне дали устаревшее приложение ASP.Net, написанное в vs2005 с CR 8. В настоящее время я использую vs2017 и CR 13.0.22.
Приложение взаимодействует с большим количеством различных данных и показывает несколько отчетов.и меня попросили изменить один из них, который является родительским отчетом с 5 подотчетами.Когда я впервые начал работу, я запустил проверку базы данных в родительском отчете, и мне было предложено подключиться, используя файлы схемы / XML, которые не были преобразованы в базу сохраненного кода и теперь потеряны.
Я заново создал6 наборов данных / соединений, которые подключаются к хранимым процедурам для данных и реорганизовали / перепроектировали все 6 отчетов для повторного подключения к новым наборам данных.
Теперь, когда я запускаю приложение, я получаю вышеупомянутую ошибку: Неверное имя подотчета
Вот метод, который генерирует ошибку:
public void GenerateReport(List<Report> Reports, CrystalReportViewer Viewer)
{
int rptcount;
Report mainreport;
// make sure there is only one main report in the list
rptcount = 0;
mainreport = null;
foreach (Report report in Reports)
{
if (report.IsSubReport == false)
{
rptcount = rptcount + 1;
mainreport = report;
}
}
if (rptcount != 1)
throw new Exception("ReportWriter.GenerateReport: There was more than one main report found in the list of reports. " +
"Only one can be the main report. The other reports have to be subreports.");
// generate the report
checkReportFile(mainreport.ReportName);
document = new ReportDocument();
document.Load(mainreport.ReportName);
document.SetDataSource(mainreport.DataSet);
/* Previously the next line was a call to setReportParameters and the code errored with the Invalid Subreport Name call. I moved that line of code to after the For Each and now the error occurs within the foreach loop on the first iteration. */
// attach sub reports to the main report
foreach (Report report in Reports)
{
if (report.IsSubReport == true)
/* This line throws the error */
document.OpenSubreport(report.ReportName).SetDataSource(report.DataSet);
}
/* This is the previously failing line that I moved to here */
setReportParameters(document, mainreport.ReportParameters);
Viewer.ReportSource = document;
}
Я запустил код в отладчике и остановил выполнение до ошибки.Затем я выполнил фрагмент «document.OpenSubreport (report.ReportName)» в строке сбоя в ближайшем окне, и это именно то место, где выдается ошибка.Тип / объект ReportDocument является частью библиотеки Crystal Decisions, и невозможно углубиться в этот код, поэтому у меня нет данных, чтобы точно определить, что именно не работает.Я просматривал все преобразованные подотчеты снова и снова, и все они выглядят идеально в дизайне.Как я могу определить, что действительно терпит неудачу здесь?Есть ли способ проанализировать файл .rpt, чтобы увидеть, есть ли в нем какой-то устаревший мусор, который нужно удалить?Если я не могу найти ответ, мне придется начинать все с нуля ...