Связь двух источников данных по полю-битовой маске в отчете

CouRageCouRage Санкт-Петербург
отредактировано 14:52 Раздел: FastReport .NET
Есть две таблицы, одна справочник (TABLE_GROUPS), другая - данные (TABLE_DATA). Обе содержат поле GROUP_MASK (Integer).
В TABLE_GROUPS поле GROUP_MASK содержит уникальные битовые комбинации, например:
[TABLE_GROUPS]
GROUP_MASK
1
2
4
8

В TABLE_DATA поле GROUP_MASK содержит битовые комбинации значений из TABLE_GROUPS:
[TABLE_DATA]
GROUP_MASK
2 - (2)
3 - (1+2)
5 - (1+4)
7 - (1+2+4)

В отчете необходимо напечатать эти две таблицы в MasterDetail-виде, установив связь по полю GROUP_MASK по битовой операции AND. Однако FR позволяет устанaвливать связь только по операции "=". Значит вариант со связью отпадает.

Пробовал делать так: делал два бэнда, Master и Detail. Master привязывал к TABLE_GROUPS, а Detail к TABLE_DATA. В Detail-бэнде ставил фильтр ([TABLE_GROUPS.GROUP_MASK] & [TABLE_DATA.GROUP_MASK]) != 0. Однако, почему-то печатается только одна запись из TABLE_DATA для первой записи TABLE_GROUPS.

Комментарии

  • CouRageCouRage Санкт-Петербург
    отредактировано 14:52
    P.S. Ничего, что я создал отдельную тему ? А то ИМХО сваливать все вопросы и сообщения о багах в одну тему не очень хорошо - потом поиском пользоваться неудобно.
  • отредактировано 14:52
    Если между двумя источниками задана связь, и источники используются для master-detail бэндов, FR автоматически использует эту связь. Тут вариант один - удалить связь, и использовать фильтр.
  • CouRageCouRage Санкт-Петербург
    отредактировано 14:52
    В том то и дело, что связи нет. Есть только фильтр и он работает неправильно.

    Выслал пример на <tz@fast-report.com>. Там в Detail-бэнде стоит фильтр, который имитирует связь.
  • отредактировано 14:52
    В данном примере связь есть, она создается в момент регистрации датасета в программе. Это такая особенность FR - он смотрит, если оба источника выбраны в отчете, то автоматом выбирается и связь. Я подумаю над тем, как лучше решить проблему.
  • CouRageCouRage Санкт-Петербург
    отредактировано 14:52
    Я удалил связь CategoriesProducts из NWind.xml в папке отчетов-примеров. Особо лучше не стало.
  • отредактировано 14:52
    Классный баг был, неявный такой... :) Исправил.
  • CouRageCouRage Санкт-Петербург
    отредактировано 14:52
    Проверил. Работает.

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

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