Подтвердить что ты не робот

Как лучше всего показывать CheckBox в службах отчетов SQL Server?

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

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

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

  • использовать Wingdings
  • использовать изображения
  • использовать текстовые поля с границами и печатать пробел или пробел или капитал X

Для всех трех подходов требуется выражение IIF shenanigans.

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

Помимо различных уже представленных методов, с 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)

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

Ответ 4

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

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

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

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

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

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

Вот пример моего вывода введите описание изображения здесь

Ответ 5

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

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

ACCESS 97 может делать такие вещи, но не SQL SERVER 2012.

Ответ 6

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

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

Ответ 7

Другой способ сделать это - перейти к свойствам "Заполнитель" в TextBox и проверить Html - Interpret HTML tag as styles

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

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

Или этот пример кода для unchecked:

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

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

Свойства залогодержателя

Later edit:

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

По-видимому, он работает.

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

Или этот пример кода для unchecked:

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

Ответ 8

Это основывается на ответе Драгоса Дурлута. У меня недостаточно высокая репутация, чтобы комментировать, но я могу ответить...

Мне нужен флажок как часть текста, который передается в качестве параметра. Параметр содержит HTML и используется в заполнителе, настроенном так же, как предлагает Dragos: HTML - интерпретировать теги HTML как стили.

Вместо того, чтобы переключаться между HTML и строками, вы можете использовать HTML Escape Codes (& + # + CharCode +; → & # 168;)

= "<font face = 'Wingdings'> & # 168; </font> Пустой флажок"

Так как мой параметр является параметром, он просто передается в строке:

<font face = 'Wingdings'> & # 168; </font> Пустой флажок

Если вам нужен установленный флажок, вы должны указать либо & # 253; или & # 254; вместо:

<font face='Wingdings'>&#253;</font> filled with an x
<font face='Wingdings'>&#254;</font> filled with a checkmark