我们遇到的众多报告服务的怪癖之一就是完全缺乏CheckBox控件甚至是远程类似的东西.
我们有一个表格应根据从数据库中提取的信息自动填写.我们有几个位数据类型字段.打印出"True"或"False"只是看起来很傻,因为它应该看起来像是一个自动填写的表单,所以我们想要一系列复选框和标签,可以选中也可以不选中.
我们正在运行SSRS 2005,但我不知道SSRS 2008添加了CheckBox控件.即使这样,我们也需要暂时替代.到目前为止我们发现的最好的是:
使用Wingdings
使用图像
使用带边框的文本框并打印空白/空格或大写字母X.
所有这三种方法都需要IIF
表达恶作剧.
Wingdings的方法似乎可以接受,并且是最美观的,除了无论出于什么原因它并不总是正确打印.更重要的是,PDF导出,无论出于何种原因,将所有字体(通常)转换为Arial,因此我们得到了时髦的字母,而不是Windings dingbats.
作为基于像素的光栅的图像在沿文本等侧向矢量打印时效果不佳.除非小心处理,否则它们会拉伸,像素化,并做其他不专业的事情.
虽然这些方法确实有效(有些方法有上述限制),但它们都不是特别优雅.
我们缺少明显的东西吗? 不是很明显?微软的某个人是否有充分的理由为什么SSRS 2000中没有提供这样的控制,更不用说2个版本和8年之后?这不是第一次出现这个问题......
我和我店里的其他人一起使用图像,根据字段值(true或false)切换隐藏属性.我们没有任何模糊或缩放问题,除非我们试图将图像的比例显然提高到100%以上.
我使用的另一个选项类似于wingdings的想法,但我只使用一个普通的旧"X".至少在我们的表格中,有人在盒子中使用X而不是复选标记并不罕见,因此它看起来完全可以接受.另外,打印时不必担心奇怪的字符.
至于为什么微软不包含复选框控件,我无法回答这个问题,因为我自己很长时间以来一直想知道同样的事情.
我用来显示复选框(或投票箱):
1-创建文本框(将成为您的复选框)
2-
在表达式窗口
中将字体更改为Arial Unicode MS 3-使用:ChrW(&H2611)表示已填写-in复选框
ChrW(&H2610)表示一个空复选框
除了已经提出的不同方法之外,从SQL Server 2008 R2开始,还有一个内置控件,可用于类似复选框的功能:指示器!
有关如何使用它的详细信息,请查看此处:http://blog.hoegaerden.be/2012/08/04/displaying-checkboxes-in-an-ssrs-report/
为了能够使用bit类型的字段,你必须先将它强制转换为int.这可以在数据集查询中完成,也可以通过向数据集添加计算字段来完成.
如果您希望NULL显示为黄色,那么您将需要以这种方式构建表达式,以便将该需求考虑在内.
这是计算字段的可能表达式:
=Switch( IsNothing(Fields!YourBoolean.Value), 50, Fields!YourBoolean.Value = False, 0, Fields!YourBoolean.Value = True, 100)
根据您的字段的含义 - 是假或好 - 您可能需要交换零和100.
我只是想在这个博客上分享这个想法.SSRS:如何在报告上显示复选框
首先创建一个文本框
然后将字体系列更改为Wingdings
在文本框中插入表达式并编写此表达式.
=IIF(Fields!Active.Value,chr(254),"o")
Fields!Active.Value可以是您的查询中应该返回布尔值1或0的任何内容.
然后单击预览并看到复选框;)
可以在我上面分享的博客上选择更多样式.
这是我输出的一个例子