Как лучше всего отображать флажки в службах отчетов SQL Server? - PullRequest
30 голосов
/ 03 ноября 2008

Одной из многих странностей служб Reporting Services, с которыми мы столкнулись, является полное и полное отсутствие элемента управления CheckBox или даже чего-то отдаленно подобного.

У нас есть форма, которая должна автоматически заполняться на основе информации, полученной из базы данных. У нас есть несколько битовых полей типа данных. Распечатка «True» или «False» выглядит просто глупо, поскольку это должно выглядеть как форма, которая была заполнена автоматически, поэтому мы хотим иметь ряд флажков и меток, которые либо отмечены, либо не отмечены.

Мы работаем с SSRS 2005, но мне не известно, что в SSRS 2008 был добавлен элемент управления CheckBox. Даже если бы это было так, у нас должна была бы быть альтернатива в настоящее время. Лучшее, что мы нашли на данный момент:

  1. использовать Wingdings
  2. использовать изображения
  3. использовать текстовые поля с полями и печатать пробел / пробел или заглавную букву X

Все три подхода требуют IIF выражения махинаций.

Подход Wingdings, казалось, работал приемлемо и был наиболее эстетичным, за исключением того, что по какой-то причине он не всегда печатался правильно. Что еще более важно, экспорт PDF, также по любой причине, преобразовал все шрифты (как правило) в Arial, и поэтому мы получили забавные буквы вместо дингбатов Windings.

Изображения, будучи растром на основе пикселей, не очень хорошо работают при печати вдоль побочных векторов, таких как текст. Если с ними не обращаться осторожно, они имеют тенденцию растягиваться, пикселироваться и делать другие непрофессионально выглядящие вещи.

Хотя эти методы работают (некоторые с ограничениями, упомянутыми выше), ни один из них не является особенно элегантным.

Мы что-то упускаем из виду? Не так очевидно? У кого-то в Microsoft есть веская причина, почему такой контроль не был предоставлен в SSRS 2000, не говоря уже о 2 версиях и 8 лет спустя? Это не может быть в первый раз, когда эта проблема возникла ...

Ответы [ 7 ]

19 голосов
/ 03 ноября 2008

Я, как и другие в моем магазине, использовал изображения, переключая скрытый атрибут на основе значения поля (true или false). У нас не было проблем с размытием или масштабированием, если только мы не попытались увеличить масштаб изображения более чем на 100%.

Другой вариант, который я использовал, похож на идею wingdings, но я просто использую старый добрый "X". По крайней мере, в наших формах кто-то часто использует X в поле вместо галочки, поэтому это выглядит вполне приемлемым. Кроме того, вам не нужно беспокоиться о странных символах при печати. ​​

Что касается того, почему Microsoft не включает элемент управления флажком, я не могу ответить на этот вопрос, потому что сам долго задавался вопросом об одном и том же.

12 голосов
/ 01 апреля 2010

Что я использовал для отображения флажка (или избирательного бюллетеня):
1- создать текстовое поле (которое станет вашим флажком)
2 - изменить шрифт на Arial Unicode MS
3- в окне выражения используйте:
ChrW (& H2611) для заполненного флажка
ChrW (& H2610) для пустого флажка

9 голосов
/ 29 июля 2015

Я просто хочу поделиться идеей в этом блоге. SSRS: как отобразить флажок в отчете

  1. Сначала создайте текстовое поле
  2. Затем измените семейство шрифтов на Wingdings
  3. Вставьте выражение в текстовое поле и напишите это выражение.

    =IIF(Fields!Active.Value,chr(254),"o")
    

    Поля! Active.Value может быть любым из вашего запроса, который должен возвращать логическое значение 1 или 0.

  4. Затем нажмите Предварительный просмотр и увидите флажок;)

В блоге, которым я поделился выше, можно выбрать больше стилей.

Вот пример моего вывода enter image description here

9 голосов
/ 13 октября 2012

Помимо различных уже представленных методов, в SQL Server 2008 R2 есть встроенный элемент управления, который можно использовать для функций, аналогичных флажкам: Индикатор !

Посмотрите здесь подробности о том, как его использовать: http://blog.hoegaerden.be/2012/08/04/displaying-checkboxes-in-an-ssrs-report/

Чтобы иметь возможность использовать поле типа бит , сначала вам нужно привести его к int . Это можно сделать либо в запросе к набору данных, либо добавив вычисляемое поле в набор данных.

Если вы хотите, чтобы значения NULL отображались желтым цветом, то вам нужно построить выражение таким образом, чтобы оно также учитывало это требование.

Вот возможное выражение для вычисляемого поля:

=Switch(
    IsNothing(Fields!YourBoolean.Value), 50,
    Fields!YourBoolean.Value = False, 0,
    Fields!YourBoolean.Value = True, 100)

В зависимости от значения ваших полей - Ложь хорошо или плохо - вам может понадобиться поменять местами ноль и 100.

3 голосов
/ 19 февраля 2013

Вы также можете использовать строковое вычисляемое поле, например "[X]" или "[]". Это менее красиво, чем текстовое поле с рамкой, но вам не нужно устанавливать специальный элемент управления для значения, и вы можете заполнить таблицу или матрицу этим.

По крайней мере, есть какое-то решение для флажка. Я все еще ищу полное обоснование для своего текста (на самом деле я ищу другое решение, кроме SSRS).

ACCESS 97 мог бы создавать такие вещи, но не SQL SERVER 2012.

2 голосов
/ 01 июня 2009

Я думаю, что есть ошибка с SSRS и встраиванием символов шрифта выше 128 (что-то вроде кодировки ANSI). В основном вы можете использовать 1-128 штрафа, остальные отображаются в виде высоких прямоугольных блоков.

Мне нравится идея Нью-Йорка о текстовом поле с рамкой и необязательным знаком X - это звучит просто и эффективно.

1 голос
/ 06 сентября 2017

Еще один способ сделать это - перейти в «Свойства заполнителя» TextBox и проверить Html - Interpret HTML tag as styles

Затем в Value - Expression поместите эту строку кода для проверенного:

="<font face=""Wingdings 2"" color=""green"">" & Chr(81) &"</font>" & "some other text"

Или этот пример кода для непроверенного:

="<font face=""Wingdings 2"" color=""red"">" & Chr(163) &"</font>" & "some other text"

Таким образом, вы можете иметь флажок и текст в одном текстовом поле.

Palceholder properties

Later edit:

Если у вас возникли проблемы с отображением Wingdings 2 в Azure, используйте Wingdings.

Видимо, это работает.

="<font face=""Wingdings"" color=""green"">" & Chr(253) &"</font>" & "some other text"

Или этот пример кода для непроверенного:

="<font face=""Wingdings"" color=""red"">" & Chr(168) &"</font>" & "some other text"
...