Как лучше всего отображать флажки в службах SQL Server Reporting Services?



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



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



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




  1. использовать Wingdings

  2. использовать изображения

  3. используйте текстовые поля с границами и печатайте пробел или заглавную букву X


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



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



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



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



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

640   7  

7 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

="<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"

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

Свойства Palceholder

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"

Comments

    Ничего не найдено.