Свойство Tablerow.visible

отредактировано 16:17 Раздел: FastReport .NET
Можно ли сделать так, чтобы это свойство работало? Сейчас при Visible = False строка TableRow все равно видима.
Просто нужен отчет, в котором в зависимости от данных будет отображаться некоторые строки в таблице или нет. Сама таблица статическая.

Комментарии

  • отредактировано 16:17
    Сделал, изменения будут доступны в версии 1.0.203.
  • отредактировано 16:17
    Круто. Спасибо.
  • отредактировано 16:17
    Просматривая демо отчетов обратил внимание, что для кросс-таблиц свойство показывать/не показывать итоговые строки и столбцы не отрабатывает (файл «Matrix With Columns Only.frx»). Я пытался изменить это свойство в дизайнере, пытался программно:
    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;
    Или это свойство пока не реализовано?
  • отредактировано 16:17
    Здравствуйте,

    Да, для матрицы этот прием не работает. Если нужно просто отключить тот или иной итог, это можно сделать в контекстном меню ячейки, к которой относится итог. Скрывать-показывать итог в зависимости от каких-либо условий сейчас нельзя.
  • отредактировано 16:17
    Здравстуйте!
    В контекстном меню выбрать "Нет" для функции агрегирования? Сводная таблица - средство именно агрегирования данных, и без указания функции агрегирования, непонятно что отображать в ячейке итога! Кстати, отключение функции ни к чему не привело, все так же в ячейке производится суммирование, и она все так же видима.
    Если поменять операцию суммирования на "Среднее", то получаются неправильные результаты:
    +
    +
    +
    | | 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 нас бы устроил своей функциональностью. Однако, подобные баги и нереализованность некоторых свойств сильно напрягают! Если их исправления у вас стоит "в плане", то когда их можно ожидать?
  • отредактировано 16:17
    Здравствуйте,

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

    Если в ячейку попадает несколько значений, они в любом случае суммируются (независимо от выбранной ф-и), затем по полученным значениям вычисляются итоги. Переделка потребует немного времени, я сейчас в отпуске до понедельника, на следующей неделе займусь.
  • отредактировано 16:17
    Здравствуйте!
    1. Пусть ничего не суммируется и строки-столбцы итогов будут пустые, но если matrix имеет оформление цветом и рамками, то и цвет и рамки будут видны и это не лучший выход. Желательно все же реализовать свойства видимости вне зависисмости от вычислений (ведь даже property для этого уже есть!).
    2. По большому счету, любой контрол - средство представления данных и матрица здесь не исключение, согласен. Однако есть большое "НО". Я готов поправиться и сказать, что "матрица - средство представления АГРЕГИРОВАННЫХ данных". Таково ее математическое предназначение - предоставлять пользователю для анализа данные, подвергнутые простейшим операциям (второе ее название - сводная таблица)! А потому сводить ее предназначение к суммированию ВСЕГДА - это выхолащивание самой ее идеи. Если выбрана функция Максимум, то суммирование здесь просто никчему, а если Среднее - то суммирование это просто один из шагов, необходимых для получения значения в ячейке. Из этих же соображений: функции "Нет" во всплывающем меню быть вообще не должно, какая-то операция быть должна всегда, а управлять видимостью через операцию - не логично. вычисления должны быть отделены от видимости.
    Впрочем, подобные обсуждения можно отложить и до "послеотпуска". Всего хорошего!
  • отредактировано 16:17
    Наши пользователи нашли иное применение матрице - печать расписания лекций в вузе. Вот там агрегация не нужна и, более того, вредна.
  • отредактировано 16:17
    Расписание лекций (уж сколько мы их понастругали!!!) - вырожденный случай кросс-таблицы:
    1. каждому элементу столбца соответствует один элемент строки, а потому в агрегации участвует только один элемент, сооответствующий их комбинации (обзовем его VALUE). ОДИН, но АГРЕГАЦИЯ имеет место! ВСЕГДА! Повторюсь еще раз: в этом основная идея кросс-таблицы.
    2. VALUE может быть и типа STRING, и тогда в качестве операции агрегирования, скорее всего, используется или Максимум или Минимум, вполне корректная орперация для строк.
    Так что, пример с расписанием никак не разрушает упоминавшуюся мной общую идею кросс-таблицы: агрегировать, агрегировать и еще раз агрегировать (для столбцов, колонок и тоталов).
    И если кто-то из пользователей неправильно использует инструмент, то это не значит, что его не надо затачивать...
  • отредактировано 16:17
    В следующем билде (1.1.59):
    - добавил св-во "Подавлять итоги" в контекстное меню ячейки-заголовка;
    - переделал агрегацию данных, теперь все функции работают корректно.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.