2008-11-03 5 views
29

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

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

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

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

Все три подхода require IIF выражение shenanigans.

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

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

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

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

+1

SSRS 2000 был выпущен в 2004 году Таким образом, они имели * только * 5 лет выкручиваться. –

+0

SQL Server 2012 вышел и по-прежнему не установлен флажок только 12 лет, чтобы не добавить одну простую функцию. – lancegerday

+0

Я бы посоветовал начать или добавить в реальную дискуссию Microsoft или область ответа функции - у них много, а не жаловаться здесь. Причиной может быть то, что я уже видел слишком много: люди используют SSRS в качестве инструмента бизнес-процесса вместо инструмента отчетности. Это добавляет огромную сумму к совокупной стоимости владения и может вызвать другие проблемы ... и действительно, какой отчет нужен флажок ?! – Volvox

ответ

18

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

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

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

1

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

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

+3

Это в конечном итоге то, что мы закончили делать. Ничего более не работало во всех трех форматах: просмотр веб-страниц, печать и экспорт в формате PDF. Я все еще думаю, что они должны были иметь контрольный флажок уже давно. Тот факт, что SSRS 2008 по-прежнему не имеет хорошего решения после 8 лет службы Reporting Services, невероятно. –

11

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

+0

, когда я экспортирую в pdf, он показывает флажок в половинном размере. Я использую Chr (0168). –

+0

Работает с экспортом в pdf! Шрифт 'Arial Unicode MS' был ключевым для его работы. Не работает со стандартным 'Arial' –

8

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

Посмотрите здесь для подробностей о том, как использовать его: 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.

+0

Индикатор кажется, что он будет (наконец) хорошо подходит, но я заметил, что ваш пример использует целочисленные значения. Не подтягивая проект SSRS, можете ли вы легко использовать его с логическим значением? Как насчет нулевой точки (и, возможно, получить ожидаемую желтую/предупреждающую версию)? –

+0

Я продлил ответ, чтобы ответить на ваши вопросы, казался более выполнимым, чем ответ через комментарий :) –

2

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

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

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

7

Я просто хочу поделиться идеей в этом блоге. SSRS: How to Display Checkbox on Report

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

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

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

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

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

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

+1

Это лучшее решение :) –

0

Другой способ сделать thisd это зайти в «Свойства PlaceHolder» из 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" 
Смежные вопросы