Отчет Microsoft - как иметь две таблицы с группировкой, которые должны показывать разные записи из одного и того же набора на основе исключительных условий - PullRequest
0 голосов
/ 20 октября 2011

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

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

Оба отчета имеют одинаковую группировку (две группы, по отделу Категория, и Категория включена в отдел).

Таким образом, отчеты должны выглядеть следующим образом

Table 1 - Non retired (RetirementDate is null)
  Department 1
    Categ 1
      Details ....
    ....
    Categ n
      Details ....

  Department 2
    Categ 1
      Details ....
    ....
    Categ n
      Details ....

Table 2 - Retired (RetirementDate is not null)
  Department 1
    Categ 1
      Details ....
    ....
    Categ n
      Details ....

  Department 2
    Categ 1
      Details ....
    ....
    Categ n
      Details ....

Я пытался установить фильтр для таблицы 1 Trim (RetiredDate & "") = "" и для таблицы 2 Trim (RetiredDate & "")! = ""

Но это не сработало. Таблица 1 даже не отображалась (даже если 90% записей имеют RetiredDate = null), она просто отображает общую итоговую полосу, и большинство записей было показано в таблице 2. Очевидно, я не понимаю, как работает фильтр на столе

Мне удалось временно обойти эту проблему, установив вышеупомянутое условие для скрытой подпорки на полосе подробностей каждой таблицы, и это отчасти сработало (за исключением того, что показывает заголовок отдела / заголовка отдела для всех комбинаций отдела / категории, независимо от того, есть они или нет подробностей записи - что, очевидно, нехорошо).

Может кто-нибудь сказать, как я могу добиться того, что мне нужно? Я думал, что Фильтр на столе должен работать, но очевидно, что это не так, как я думал.

Я использую SSRS 2005, и на самом деле отчет используется в автономном режиме, когда набор данных «помещается» в отчет перед открытием клиентским приложением, а отчет загружается в веб-средство просмотра. Вот почему я не могу изменить какие данные я получаю.

Спасибо

Ответы [ 2 ]

1 голос
/ 20 октября 2011

У вас правильный подход. Попробуйте использовать функцию IsNothing. В 2008 году вы можете применить фильтр к таблице. Я думаю, что в 2005 году есть аналогичные функциональные возможности. Если это похоже на 2008 год, где вы можете установить несколько формул (в отличие от одной формулы в видимости), то обычно я устанавливаю обе формулы для возврата строки и сравнения. Таким образом, первая формула будет

=IIF(IsNothing(Fields!RetiredDate.value), "Show", "Hide")

Тогда второй будет ="Show", и я бы потребовал, чтобы они совпадали.

Чтобы отладить что-то подобное, вы можете добавить формулы (временно) в качестве полей в вашей таблице. Это позволит вам увидеть, оцениваются ли вещи так, как вы ожидаете.

0 голосов
/ 20 октября 2011

На самом деле я сделал это наконец, создав новую группу, внешнюю, для IsNothing (RetirementDate) и собрал все данные в одной и той же таблице

...