#wpf #crystal-reports #reportviewer #crystal-reports-export #crystal-reports-2010
#wpf #crystal-отчеты #reportviewer #crystal-отчеты-экспорт #crystal-reports-2010
Вопрос:
У меня есть решение для выставления счетов WPF, которое развернуто с помощью ClickOnce для более чем 500 пользователей, для создания отчетов использовались CrystaReports2010, у 85% пользователей на их компьютерах установлена WindowsXP : (
Crystal Reports отлично работает на компьютерах WindowsXP, пока пользователь не экспортирует отчет с помощью встроенной кнопки экспорта в программе просмотра Crystal Reports, если он сделал это, процесс экспорта завершается успешно, но он не может открыть какой-либо другой отчет в решении, пока не перезапустит приложение.
Это ошибка при попытке открыть новый отчет после экспорта:
Я сохраняю отчеты в своем решении как внешние ресурсы содержимого вне файла application .exe и загружаю их по запросу, примерно так:
var report = new ReportDocument();
report.Load(@"ReportsMyReport.rpt");
Я убедился, что после закрытия отчета пользователь закрывает объект report document и удаляет его, чтобы не было утечек памяти или превышения максимального количества открытых отчетов.
Если я изменил свою реализацию таким образом, чтобы сохранять отчеты внутри моего решения в виде встроенных ресурсов, проблема решена, но это не вариант, поскольку отчеты относительно большого размера (200-450 КБ), это будет большой DLL-файл, который будет загружаться клиентам через ClickOnce всякий раз, когда мы выпускаем новую версию, содержащую какие-либо изменения в любом отчете!. Другой вариант заключается в группировании каждого, скажем, четырех отчетов в одну DLL, и все та же проблема (1-2 МБ — это все еще большой кусок). Зная, что у нас много отчетов, и мы получаем частые запросы на изменение этих отчетов в соответствии с изменениями в политиках нашего клиента. Пожалуйста, помогите!
Ответ №1:
Чтобы решить эту проблему, вам необходимо изменить установленную версию .net на клиентском компьютере с client profile на полную.сетевая версия.
Комментарии:
1. Я установил полный. версия net framework 4.0, но проблема все еще существует.
Ответ №2:
Вы закрываете и удаляете документы отчета после того, как закончили с ними?
Комментарии:
1. Да, я закрываю отчет и удаляю его, как только закончу его отображение.
Ответ №3:
Наконец, я нашел решение 🙂 Проблема заключалась в том, что при экспорте отчета Crystal Report с помощью кнопки экспорта по умолчанию, предоставляемой средством просмотра Crystal Reports, кнопка экспорта изменяет текущий рабочий каталог приложения на местоположение экспорта!!! (странное поведение!!) и именно поэтому следующая строка больше не будет работать:
report.Load(@"ReportsMyReport.rpt");
Итак, я изменил эту строку на следующую:
report.Load(AppDomain.CurrentDomain.BaseDirectory "\" @"ReportsMyReport.rpt");
И это сработало как по волшебству 🙂