Свойство Tablerow.visible
Можно ли сделать так, чтобы это свойство работало? Сейчас при Visible = False строка TableRow все равно видима.
Просто нужен отчет, в котором в зависимости от данных будет отображаться некоторые строки в таблице или нет. Сама таблица статическая.
Просто нужен отчет, в котором в зависимости от данных будет отображаться некоторые строки в таблице или нет. Сама таблица статическая.
Комментарии
private void Matrix1_BeforePrint(object sender, EventArgs e)
{
Row5.Visible = false;
Column3.Visible = false;
}
В том числе на обработчике событий _StartReport.
Результат – нулевой, итоги не скрываются. В документе NetUserManual ничего про скрытие итогов не говорится, нет ни одного примера. А проблема злободневная, и конечный пользователь часто требует скрывать ненужные сведения; и по логике отчета итого по средним значениям (например) – нонсенс.
В примере из файла «Two Row Dimensions.frx» для 2002 года есть 2 строки: одна с данными за месяц 1 (январь), вторая – с итогом по работникам. По опыту знаю, что пользователь часто требует в таких случаях итоговую строку «подавлять».
Возможно удастся достать свойство видимости обращаясь к итоговой строке через модель Matrix1:
Matrix1.Rows.Item(3).Visible = false;
Или это свойство пока не реализовано?
Да, для матрицы этот прием не работает. Если нужно просто отключить тот или иной итог, это можно сделать в контекстном меню ячейки, к которой относится итог. Скрывать-показывать итог в зависимости от каких-либо условий сейчас нельзя.
В контекстном меню выбрать "Нет" для функции агрегирования? Сводная таблица - средство именно агрегирования данных, и без указания функции агрегирования, непонятно что отображать в ячейке итога! Кстати, отключение функции ни к чему не привело, все так же в ячейке производится суммирование, и она все так же видима.
Если поменять операцию суммирования на "Среднее", то получаются неправильные результаты:
+
+
+
| | Revenue |
+
+
+
+
+
+
+
| ГОД |Andrew Fuller|Janet Leverling|Nancy Davolio |Steven Buchanan | |
+
+
+
+
+
+
+
| 1999 | 3900| 6100 | 3300 | | 4433,33333333333 |
+
+
+
+
+
+
+
| 2000 | 2100 | 3200 | 2700 | 3999 | 2999,75 |
+
+
+
+
+
+
+
1999 Andrew Fuller 1 900
1999 Andrew Fuller 2 000
1999 Janet Leverling 3 100
1999 Janet Leverling 3 000
1999 Nancy Davolio 1 000
1999 Nancy Davolio 1 100
1999 Nancy Davolio 1 200
Так вот, для Andrew Fuller за 1999 должно быть 1950 как (1900 +2000) / 2, а для Nancy Davolio - 1100 (1000 + 1100 + 1200) / 3.
Да и итог за год не 4433,33333333333 , а 1900 ( [1900 + 2000 + 3100 + 3000 + 1000 + 1100 + 1200] / 7 )
К сожалению, это серьезный недочет. Передо мной стоит задача оценить и выбрать генератор отчетов для нашей компании, и по описанию FastReport нас бы устроил своей функциональностью. Однако, подобные баги и нереализованность некоторых свойств сильно напрягают! Если их исправления у вас стоит "в плане", то когда их можно ожидать?
Если выбрать ф-ю "Нет", ничего суммироваться не будет, а строки-столбцы итогов будут пустые. Это бывает полезно при выводе в ячейках строковых данных (тут Вы не правы - объект Матрица в первую очередь - это не средство агрегирования, а средство представления данных).
Если в ячейку попадает несколько значений, они в любом случае суммируются (независимо от выбранной ф-и), затем по полученным значениям вычисляются итоги. Переделка потребует немного времени, я сейчас в отпуске до понедельника, на следующей неделе займусь.
1. Пусть ничего не суммируется и строки-столбцы итогов будут пустые, но если matrix имеет оформление цветом и рамками, то и цвет и рамки будут видны и это не лучший выход. Желательно все же реализовать свойства видимости вне зависисмости от вычислений (ведь даже property для этого уже есть!).
2. По большому счету, любой контрол - средство представления данных и матрица здесь не исключение, согласен. Однако есть большое "НО". Я готов поправиться и сказать, что "матрица - средство представления АГРЕГИРОВАННЫХ данных". Таково ее математическое предназначение - предоставлять пользователю для анализа данные, подвергнутые простейшим операциям (второе ее название - сводная таблица)! А потому сводить ее предназначение к суммированию ВСЕГДА - это выхолащивание самой ее идеи. Если выбрана функция Максимум, то суммирование здесь просто никчему, а если Среднее - то суммирование это просто один из шагов, необходимых для получения значения в ячейке. Из этих же соображений: функции "Нет" во всплывающем меню быть вообще не должно, какая-то операция быть должна всегда, а управлять видимостью через операцию - не логично. вычисления должны быть отделены от видимости.
Впрочем, подобные обсуждения можно отложить и до "послеотпуска". Всего хорошего!
1. каждому элементу столбца соответствует один элемент строки, а потому в агрегации участвует только один элемент, сооответствующий их комбинации (обзовем его VALUE). ОДИН, но АГРЕГАЦИЯ имеет место! ВСЕГДА! Повторюсь еще раз: в этом основная идея кросс-таблицы.
2. VALUE может быть и типа STRING, и тогда в качестве операции агрегирования, скорее всего, используется или Максимум или Минимум, вполне корректная орперация для строк.
Так что, пример с расписанием никак не разрушает упоминавшуюся мной общую идею кросс-таблицы: агрегировать, агрегировать и еще раз агрегировать (для столбцов, колонок и тоталов).
И если кто-то из пользователей неправильно использует инструмент, то это не значит, что его не надо затачивать...
- добавил св-во "Подавлять итоги" в контекстное меню ячейки-заголовка;
- переделал агрегацию данных, теперь все функции работают корректно.