2013-04-16 3 views
2

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

Реле:
Имя (простое поле),
Тип (Enum поле),
Контакты (навигационное поле Контакты Entity один ко многим.)

Контакты:
DISPLAYNAME (простое поле)
AlloteToSheet (простое поле).

Вот как выглядит отчет. Колонки генерируются из поля «Отображаемое имя» Контакты таблица с использованием столбцов.

Generated Report Sample

Теперь вот вопрос. В Отчете выше отмечены 2 региона. Это так, потому что у меня есть два типа реле (скажем, на данный момент). Поля «Отображаемое имя» таблицы «Контакты» одинаковы для определенного типа реле, поэтому я получаю два набора столбцов (как отмечено) в моем отчете. На основе типа реле я хочу создать или показать только один набор столбцов для всего отчета, потому что другой набор не имеет смысла для типа реле, а для каждого типа реле будет свой собственный сгенерированный отчет (rdl). Итак, как мне добиться этого.

В целом, для столбцов, полученных с помощью столбцов группы, как я отфильтровать или скрыть определенные столбцы из отчета на основе некоторого условия field.value базы данных

Edit: Report Designer Посмотреть enter image description here

+1

У меня есть несколько вопросов. Каков ваш SQL, поскольку эти столбцы не должны проходить, если вы этого не хотите? Также этот отчет предназначен только для одного типа реле? – glh

+0

Созданный SQL-запрос имеет только JOIN для столбцов связанных таблиц. Я добавил предложение WHERE в запросе DATASET для Relay_Type, и теперь генерируются только соответствующие столбцы. Итак, теперь мне не нужно добавлять выражение видимости для скрытия некоторых столбцов. В любом случае, видимость для сгенерированных столбцов не скрывает столбец, а превращает его в пустое пустое пространство для столбца, поэтому мне нечего использовать. Я прошел через пару блогов, где я мог это подтвердить. Таким образом, вы абсолютно правы в своем комментарии, что это должно обрабатываться в самом SQL. Я буду отмечать ваш комментарий как полезный – Jatin

ответ

0

Вдохновленный предложением @ glh изменить запрос DataSet напрямую, мне удалось сгенерировать только записи (в моих столбцах), которые были релевантны определенному Relay_Type. В Query я просто должен был добавить предложение SQL WHERE, которое загружало бы данные только о конкретном Relay_Type. Таким образом, Query в DataSet генерировал только те столбцы, которые были релевантны для определенного Relay_Type. Поэтому не нужно было менять выражение видимости, чтобы скрыть столбцы. Фактически, выражение Visibility не скрывало столбцы, а просто «Blanked it Out» занимает пробел в отчете. Так что модификация SQL кажется лучшим вариантом для моего случая.

Nirvan.

2

Вы пытались установить Column Visibility для выражения на основе?

enter image description here

enter image description here

Установите выражение что-то вроде:

=IIf(Fields!RelayType.Value = "Relay1", false, true) 

Обновления в соответствии с требованиями для различных комбинаций реле/​​столбцов.

+0

Собственно, я не думаю, что это было бы возможно. Колонки генерируются динамически на основе «групп столбцов», и у меня нет индивидуального доступа к столбцу, созданному в отчете. Если вы видите изображение, которое я разместил в моем вопросе, первые три столбца являются единственными, которые я могу действительно установить для свойств, таких как видимость. Все столбцы за столбцом «Relays_Name» генерируются динамически на основе данных таблицы контактов. – Jatin

+0

Пожалуйста, посмотрите изображение дизайнера, которое я добавил в исходном вопросе выше. Это сделает мой вопрос более ясным. – Jatin

+0

@Nirvan Прошло некоторое время с тех пор, как я работал с динамическими столбцами, но я думаю, что это не имеет значения, если они динамически создаются. У вас есть один столбец в вашем построителе отчетов, просто примените решение Ian к этому, и оно будет действительным для всех столбцов в этой группе. Вы проверили? – eestein

1

Я думаю, что лучше всего связывать таблицы через объединение в SQL. Это приведет к удалению дополнительных столбцов, заполняемых в наборе данных.

+0

Да, я думаю, что писать SQL вместо того, чтобы он был сгенерирован, может быть хорошим звонком. На самом деле у меня был опыт IBM MAINFRAME, где мы часто использовали raw SQL, и у меня все еще есть похмелье. Но теперь, в эту эпоху Объекта, я сомневаюсь, что у разработчиков есть прочная основа SQL. Таким образом, это не большой вариант для некоторых, хотя. Спасибо – Jatin

+0

Понял, добавленное преимущество для этого в sql - это производительность, так как отчет должен будет получить все данные, затем вырезать некоторые из них, отображать их для вас и скрывать столбцы по мере необходимости. – glh

Смежные вопросы