2014-05-29 1 views
0

Я пытаюсь определить лучшие практики с отчетами на стороне клиента, используя Reportviewer, отображающий RDLC. При разработке отчета вы можете указать параметры для передачи отчета, который может использоваться для фильтрации записей. Однако, используя SQL Profiler, при запуске отчета кажется, что фильтр применяется после того, как записи сняты для отчета. Правильно ли я это вижу?Фильтр параметров RDLC после снятых записей

Если да, то почему это не так обескураживает? Не следует ли фильтровать данные на уровне набора данных или в какой-то момент, чтобы записи были отфильтрованы до отправки клиенту (конечно, по соображениям производительности)? Я посмотрел и искал обсуждение этих проблем через Интернет, и все, что я вижу, - это множество способов реализации параметров (т. Е. Как), но не обсуждается, когда один из способов лучше другого и почему. Это не ново, поэтому я ожидаю, что там будет больше об этом. Может ли кто-нибудь указать мне на то, что обсуждает это, если я что-то пропустил?

+0

Не уверен, что обсуждение ваши ищут , Службы отчетов всегда применяют фильтры после получения набора данных. Это связано с тем, что один и тот же набор данных может использоваться в нескольких элементах управления с различным фильтром/сортировкой/группировкой в ​​том же отчете. Также непростая задача - преобразовать фильтр/сортировку/группировку, указанный в (возможно, третьей части), в элементы, которые работают с поставщиком набора данных. Вы не можете просто добавить предложение WHERE в конце. Если вы хотите отфильтровать выбранный набор данных, вам нужно добавить параметры к запросу. – adrianm

+0

Хорошо, что потенциальная производительность не очевидна, я бы ожидал, что там будет больше советов, чтобы избежать использования параметров фильтрации в самом отчете. Я пришел из мира, в котором производительность запросов обычно является частью любого обсуждения в использовании технологии отчетности. Однако во многих примерах Reportviewer я заметил, что параметры являются «типом» типа или даже не упомянуты, но реальность такова, что параметризация, как правило, является большой частью того, чтобы сделать отчетность более гибкой и мощной. Если это нужно сделать заранее, нетрудно это сказать. –

ответ

1

Недавно я экспериментировал с RDLC на стороне клиента и пришел к выводу, что обработка данных слишком неэффективна. Как вы указываете, я столкнулся с проблемами с параметрами, которые не фильтруются, как вы ожидали. Я использовал хрустальные отчеты (о которых я думаю, что это основан) почти 10 лет назад, и я уверен, что таких проблем не было.

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

Вы правы, есть очень мало документации/обсуждение с помощью этого, в конечном счете, я в конечном итоге удаление его из моего проекта и с помощью других методов для визуализации схем/таблиц и т.д.

Смежные вопросы