Сохраните и перезагрузите сохраненный отчет rdlc - PullRequest
1 голос
/ 14 июля 2010

Я разрабатываю приложение в WPF, в котором мне нужно создавать и показывать отчеты.Я использую RDLC для генерации и отображения отчетов.Требования к отчетам:

  1. Должен генерировать и отображать отчет.
  2. Пользователь должен иметь возможность сохранить отчет (он не указал формат для сохранения отчета.)
  3. Пользователь должен иметь возможность загружать и просматривать сохраненный отчет.

В настоящее время я создаю временный файл PDF из файла RDLC для отображения отчета.Если пользователь желает сохранить отчет, отчет будет сохранен в формате PDF, в противном случае временный файл PDF будет удален.А когда пользователь хочет загрузить сохраненный отчет, он может, так как он имеет формат PDF.

В программе я использую элемент управления «winformhost» в WPF для отображения отчета.Также используется элемент управления ReportViewer.

Но проблема, с которой я сейчас сталкиваюсь, заключается в том, что отчет показывается довольно медленно, поскольку мы используем элемент управления "winformhost" и формат PDF.

У меня вопрос: как я могу повысить производительность, если я использую эту логику генерации и отображения отчета в формате PDF?Если это невозможно, есть ли другой способ, которым я могу сохранить отчет и повторно загрузить его, когда захочу, что увеличивает процесс отображения отчета?

Заранее спасибо, Аниш

1 Ответ

0 голосов
/ 14 июля 2010

По моему мнению, вы можете повысить свою производительность, разделив проблемы.Под этим я подразумеваю, что лучше генерировать набор данных для отчета из вашего пользовательского класса, а не напрямую из БД.

Например, если я хочу, чтобы мой отчет отображался: год заказа - общее количество заказов- покупатель.Я создам класс, подобный

class CustomerStatistics
{
    public int OrderYear {get;set;}
    public int OrderQty {get;set;}
    public string CustomerName {get;set;}

} 

. Как только вы это сделаете, вы сможете использовать преимущества многопоточности.Например, я знаю, что вычисление OrderQty займет некоторое время, поэтому я поместил его в отдельную ветку.

Кроме того, вы можете повысить свою производительность, создав хранимые процедуры для некоторых сложных вычислений, в которых вам нужно пройти большой набор данных.Если это так, вы должны использовать операции набора, такие как INTERSECT, EXCEPT и т. Д.оптимизировать запросы.

Это были некоторые из моих мыслей.

Приветствия.

...