Я никогда не использовал Telerik, поэтому следующий совет относится только к Crystal.
В Crystal можно условно скрыть кросс-таблицы как минимум двумя способами:
- В диалоговом окне «Формат» (, а не эксперт кросс-таблиц) - щелкните правой кнопкой мыши по кросс-таблице, выберите «Формат кросс-таблицы» в меню, нажмите кнопку
x-2
рядом с «Подавить». на вкладке «Общие» диалогового окна «Редактор формата» и введите соответствующую формулу (например, {?crosstab1s1}="n/a"
).
- Поместив кросс-таблицу в ее собственный подраздел и сделав подраздел условно подавленным, щелкните правой кнопкой мыши серую область слева от области макета отчета на вкладке "Конструктор отчетов" в соответствующем подразделе и выберите В разделе «Эксперт ...» нажмите кнопку
x-2
рядом с «Подавить (без детализации)» на вкладке «Общие» диалогового окна «Эксперт раздела» и введите соответствующую формулу.
Я предлагаю использовать последний из этих двух подходов - подавление самой кросс-таблицы все равно оставит пробел, где она должна была отображаться.
Вы также можете разместить каждую кросс-таблицу в своем собственном подотчете и условно подавить эти - однако это создает дополнительный уровень сложности, который в данный момент не требуется.
Несколько других комментариев:
- Параметры Crystal гораздо менее гибки, чем то, что может быть достигнуто в ASP, поэтому, если возможно, сделайте весь выбор параметров в ASP и передайте параметры Crystal.
- Кристалл обрабатывает нулевые значения несколько неудобно, поэтому передайте определенное значение, указывающее, что кросс-таблица не требуется, вместо того, чтобы полагаться на оценку параметра как нулевого.
- Ваши параметры кросс-таблицы в настоящее время упорядочены как кросс-таблица 1 и кросс-таблица 2, каждый из которых содержит разделы 1, 2 и 3 или в них. Неясно, означает ли это, что всего должно быть до шести кросс-таблиц или только два:
- Если первое, то неясно, как указывать группирование строк, столбцов и суммированные поля.
- Если последнее, то я предлагаю переименовать Разделы 1, 2 и 3 в Группу строк, Группу столбцов и Суммированное поле (поскольку я предполагаю, что это то, что они должны представлять).
- В настоящее время у вас есть параметры Показать итоги группы и Показать проценты - они, похоже, применяются к кросс-таблицам. Эти параметры можно указать в Crystal, но не обязательно в конструкторе отчетов.
- Если вы можете получить доступ к Crystal API, у вас должна быть возможность установить эти параметры программно во время выполнения.
- В противном случае единственным вариантом, если вы хотите включить обе опции для каждой кросс-таблицы, будет добавление в отчет четырех версий каждой кросс-таблицы, каждая из которых условно подавляется в зависимости от того, какие параметры выбраны. (Я бы не рекомендовал такой подход, если у вас нет альтернативы.)
- Crystal не может обрабатывать динамические структуры данных (т. Е. Структура данных должна быть известна при разработке отчета), поэтому я предлагаю генерировать набор результатов в хранимой процедуре SQL на основе указанных параметров со структурой, похожей на:
Dataset structure
crosstab1Row
crosstab1Column
crosstab1SumValue
crosstab2Row
crosstab2Column
crosstab2SumValue
reportColumn1
reportColumn2
reportColumn3
reportColumn4
reportColumn5