2008-11-03 81 views
29

我們遇到的Reporting Services的許多怪癖之一是完全缺乏CheckBox控件,甚至是遠程類似的東西。如何最好地顯示SQL Server Reporting Services中的CheckBox?

我們有一張表格應該根據從數據庫中提取的信息自動填寫。我們有幾個數據類型字段。打印出「真」或「假」看起來很愚蠢,因爲這應該看起來像一個自動填充的表單,所以我們希望有一系列複選框和標籤可以選中或不選中。

我們正在運行SSRS 2005,但我不知道SSRS 2008添加了CheckBox控件。即使這樣做了,我們現在也需要有一個替代方案。到目前爲止,我們已經找到了最好的是:

  1. 使用宋體
  2. 使用圖像
  3. 使用文本框與邊框和打印空白/空格或資本X

三種方法需要IIF表達式shenanigans。

Wingdings方法似乎可以接受地工作,除了無論出於何種原因它並不總是打印正確外,它是最美觀的。更重要的是,PDF出口也出於任何原因,將所有字體(通常)轉換爲Arial,所以我們得到了時髦的字母而不是Winding dingbats。

圖像是基於像素的光柵,當沿着像文本這樣的側向矢量打印時,效果並不好。除非仔細處理,否則他們往往會拉伸,像素化,並做其他不專業的東西。

雖然這些方法確實有效(其中一些具有上述限制),但它們都不是特別優雅。

我們是否錯過了某些明顯的東西?不是很明顯嗎?微軟的某人有一個很好的理由,爲什麼SSRS 2000沒有提供這樣的控制,更不用說2個版本和8年後?這不可能是第一次出現這個問題...

+1

SSRS 2000發佈於2004年因此他們已經有*只* 5年來得到它排序。 – 2009-10-26 14:08:34

+0

SQL Server 2012出來了,仍然沒有複選框只有12年沒有添加一個簡單的功能。 – lancegerday 2012-06-26 21:47:36

+0

我建議開始或添加到實際的Microsoft討論或功能響應區域 - 他們有很多 - 而不是在這裏抱怨。推理可能是我已經看到的太多:使用SSRS作爲業務流程工具而不是報表工具的人。它爲TCO增加了巨大的數量,並可能導致其他問題......並且真的,哪些報告需要複選框? – Volvox 2013-05-16 22:41:31

回答

18

我和我店裏的其他人一起使用圖像,根據字段值(真或假)來切換隱藏屬性。除非我們嘗試將圖像的比例明顯增加到100%以上,否則我們沒有任何模糊或縮放的問題。

我用過的另一個選項類似於wingdings的想法,但我只是使用普通的舊「X」。至少在我們的表格中,有人在盒子中使用X代替複選標記並不罕見,因此它看起來完全可以接受。另外,打印時不必擔心奇怪的字符。

至於微軟爲什麼不包括一個複選框控件,我無法回答,因爲我自己很長一段時間都在想同一件事。

1

我認爲SSRS存在一個錯誤,並在128位以上嵌入字體字符(某些與ANSI編碼相關的東西)。基本上你可以使用1-128罰款,其餘顯示爲高大的矩形塊。

我喜歡紐約的文本框的想法與邊界和可選的X - 這聽起來簡單而有效。

+3

這就是我們最終做的。所有三種格式均無效:Web查看器,打印和PDF導出。我仍然認爲他們早就應該有一個複選框控件。 SSRS 2008在經過8年的Reporting Services後仍然沒有一個好的解決方案,這一事實令人難以置信。 – 2009-06-03 01:13:48

11

我所用於顯示一個複選框(或票箱):
1-創建文本框(這將成爲你的複選框)在表達式
2-改變字體爲Arial Unicode的MS
3-窗口使用:
CHRW(& H2611)用於爲空複選框

+0

當我導出到pdf時,它顯示半角的複選框。我正在使用Chr(0168)。 – 2014-02-25 17:16:08

8

除了不同的方法填充的複選框
CHRW(& H2610)已經提出,與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

2

你可以也使用字符串計算字段,如「[X]」或「[]」。它不如帶有邊框的文本框漂亮,但您不必爲該值設置特定的控件,並且可以用此表格填充表格或矩陣。

至少有一些解決方案的複選框。我仍在爲我的文本尋找完整的理由(事實上,我正在尋找另一種解決方案,而不是SSRS知道的)。

ACCESS 97可以讓這種事情而不是SQL Server 2012的

7

我只是想分享這個博客的想法。 SSRS: How to Display Checkbox on Report

  1. 首先創建一個文本框
  2. 然後字體系列更改爲宋體
  3. 上插入文本框的表達和寫入這個表達式。

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

    場Active.Value可以從查詢任何應返回一個布爾值1或0

  4. 然後點擊預覽,看看該複選框;!)

我可以在上面分享的博客中選擇更多樣式。

這裏是我的輸出enter image description here

0

另一種方法thisd是去文本框的爲「佔位符屬性」,檢查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:

如果您在Azure上顯示Wingdings 2問題,然後使用Wingdings

顯然它工作。

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

或爲未選中此選項的代碼示例:

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