У меня довольно сложная проблема с SSRS.
Во-первых, мы используем локальные отчеты. Мы должны это сделать, потому что данные, которые мы используем, поступают из сервисов отдыха.
Во-вторых, мы создали настраиваемую библиотеку для наших отчетов под названием ReportFunctions, которую мы хотим использовать.
Мы используем инструменты данных sql server для создания .rdl (не путать с RDLC), а затем копируем файл в наш проект VS. Мы устанавливаем действие сборки на Content и Copy If Newer.
Это отлично работает для всех наших базовых отчетов. Мы даже можем использовать настраиваемую библиотеку.
Теперь мы хотим использовать некоторые из этих базовых отчетов в качестве подотчетов. Назовем этот отчет «Все отчеты». Он состоит из «SummaryReport» и «DetailReport».
Сводка и Подробности - это два файла RDL, которые также необходимо загружать независимо.
В коде для построения AllReports у меня есть следующее:
reportViewer.LocalReport.SubreportProcessing += LocalReport_SubreportProcessing;
reportViewer.LocalReport.LoadSubreportDefinition("SummaryReport", File.OpenText(Server.MapPath("SummaryReport.rdl")));
reportViewer.LocalReport.LoadSubreportDefinition("DetailReport", File.OpenText(Server.MapPath("DetailReport.rdl")));
private void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
{
//Set e.DataSources here depending on e.ReportPath
}
Когда я запускаю SummaryReport или DetailReport, они работают нормально. Когда я запускаю AllReports, я получаю сообщение об ошибке:
Подотчет «SummarySubreport» не может быть найден в указанном месте C: \ path \ to \ my \ project \ Reports \ SummaryReport.rdlc. Убедитесь, что вложенный отчет был опубликован и что имя правильное.
Ради интереса я переключил расширение двух подчиненных отчетов на .rdlc. Затем я получаю сообщение об ошибке сборки при компиляции в Visual Studio:
Ошибка при загрузке модуля кода: «ReportFunctions, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = d88351e3d4dffe2f». Подробности: не удалось загрузить файл или сборку ReportFunctions, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = d88351e3d4dffe2f или одну из их зависимостей. Система не может найти указанный файл.
DetailReport - это тот, который использует внешнюю библиотеку пользовательских функций.
Я не могу разместить свою DLL где-либо на сервере, кроме корзины проекта. Я не могу не подчеркнуть этого. Я тоже не могу перейти к отчетам сервера. Я должен использовать местные отчеты.
Если я устанавливаю действие сборки на None на RDLC, оно работает, но когда я развертываю, мой RDLC не публикуется.
Могу ли я скомпилировать RDLC? Что мне не хватает, чтобы средство просмотра отчетов использовало RDL вместо RDLC для моих вложенных отчетов?