33

我们遇到的 Reporting Services 的许多怪癖之一是完全没有 CheckBox 控件,甚至没有类似的东西。

我们有一个表单,它应该根据从数据库中提取的信息自动填写。我们有几个位数据类型字段。打印出“True”或“False”看起来很傻,因为这应该看起来像一个自动填写的表格,所以我们希望有一系列选中或未选中的复选框和标签。

我们正在运行 SSRS 2005,但我不知道 SSRS 2008 添加了 CheckBox 控件。即使是这样,我们也需要暂时有一个替代方案。到目前为止,我们发现的最好的是:

  1. 使用 Wingdings
  2. 使用图像
  3. 使用带边框的文本框并打印空白/空格或大写 X

所有这三种方法都需要IIF表达恶作剧。

Wingdings 的方法似乎可以接受,并且在美学上是最令人愉悦的,只是出于某种原因它并不总是能正确打印。更重要的是,无论出于何种原因,PDF 导出都将所有字体(通常)转换为 Arial,因此我们得到了时髦的字母而不是 Windings dingbats。

图像作为基于像素的光栅,在与文本等侧面矢量内容一起打印时效果不佳。除非小心处理,否则它们往往会拉伸、像素化和做其他看起来不专业的事情。

虽然这些方法确实有效(有些有上面提到的限制),但它们都不是特别优雅。

我们是否遗漏了一些明显的东西? 不是很明显吗?Microsoft 的某个人是否有充分的理由说明 SSRS 2000 中没有提供这样的控件,更不用说 8 年后的 2 个版本了?这个问题应该不是第一次出现了……

4

8 回答 8

20

我和我店里的其他人一起使用图像,根据字段值(真或假)切换隐藏属性。我们在模糊或缩放方面没有任何问题,除非我们试图将图像的比例明显增加到 100% 以上。

我使用的另一个选项类似于wingdings 的想法,但我只使用了一个普通的旧“X”。至少在我们的表格中,有人在框中使用 X 而不是复选标记的情况并不少见,因此看起来完全可以接受。此外,您不必担心打印时出现奇怪的字符。

至于为什么微软不包含复选框控件,我无法回答,因为我自己很长时间以来一直在想同样的事情。

于 2008-11-03T18:24:50.057 回答
17

我用来显示复选框(或投票框)的方法:
1- 创建文本框(这将成为您的复选框)
2- 将字体更改为 Arial Unicode MS
3- 在表达式窗口中使用:
ChrW(&H2611) 填充-in checkbox
ChrW(&H2610) 用于空复选框

于 2010-03-31T22:26:15.510 回答
15

我只是想在这个博客上分享这个想法。SSRS:如何在报告中显示复选框

  1. 首先创建一个文本框
  2. 然后将字体系列更改为 Wingdings
  3. 在文本框中插入一个表达式并写下这个表达式。

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

    Fields!Active.Value 可以是查询中应返回布尔值 1 或 0 的任何内容。

  4. 然后单击预览并查看复选框;)

更多样式可以在我上面分享的博客上选择。

这是我的输出示例在此处输入图像描述

于 2015-07-29T06:25:16.323 回答
12

除了已经介绍的不同方法之外,从 SQL Server 2008 R2 开始,还有一个内置控件可用于类似于复选框的功能:Indicator

在这里查看有关如何使用它的详细信息:https ://web.archive.org/web/20190916105459/http://blog.hoegaerden.be/2012/08/04/displaying-checkboxes-in-an- ssrs报告/

为了能够使用bit类型的字段,您必须先将其转换为int。这可以在数据集查询中完成,也可以通过向数据集中添加计算字段来完成。

如果您希望 NULL 显示为黄色,那么您需要以这种方式构建表达式,以便它也考虑该要求。

这是计算字段的可能表达式:

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

根据您的字段的含义 - 是假好还是坏 - 您可能需要交换零和 100。

于 2012-10-13T12:16:44.700 回答
4

另一种方法是转到 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"

这样您就可以在同一个文本框中拥有复选框和文本。

占位符属性

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"
于 2017-09-06T17:19:29.337 回答
3

您还可以使用字符串计算字段,如“[X]”或“[]”。它不如带边框的文本框漂亮,但您不必为该值放置特定控件,您可以用它填充表格或矩阵。

至少该复选框有一些解决方案。我仍在为我的文字寻找完整的理由(事实上,我正在寻找 SSRS 不知道的另一种解决方案)。

ACCESS 97 可以做这种事情,但 SQL SERVER 2012 不能。

于 2013-02-19T12:33:54.277 回答
2

我认为 SSRS 和嵌入 128 以上的字体字符存在错误(与 ANSI 编码有关)。基本上你可以使用 1-128 罚款,其余的显示为高矩形块。

我喜欢 NY 对带有边框和可选 X 的文本框的想法——这听起来简单而有效。

于 2009-06-01T14:15:26.550 回答
2

这是建立在 Dragos Durlut 的答案之上的。我没有足够高的声誉来发表评论,但我可以回答......

我需要一个复选框作为作为参数传递的文本的一部分。该参数包含 HTML 并用于占位符设置,就像 Dragos 建议的那样: HTML - 将 HTML 标记解释为样式。

不必在 HTML 和字符串之间切换,您可以使用 HTML 转义码 (& + # + CharCode + ; --> ¨)

="<font face='Wingdings'>¨</font> 空复选框"

由于我的是一个参数,它只是传入字符串:

<font face='Wingdings'>¨</font> 空复选框

如果您需要选中复选框,则可以传入 ý 或 þ 反而:

<font face='Wingdings'>ý</font> 用 x 填充
<font face='Wingdings'>þ</font> 用复选标记填充
于 2019-07-11T17:35:58.563 回答