简体   繁体   English

SSRS 中表达式中的粗体特定值

[英]Bold Specific Values in Expression in SSRS

I'm trying to make multiple values "Bold" within an expression when the value contains "x".当值包含“x”时,我试图在表达式中使多个值“粗体”。 Html Placeholder properties doesn't meet my need and I'm struggling to get it working with the below as there are multiple statements in my expression: Html 占位符属性不符合我的需要,我正在努力让它与以下内容一起使用,因为我的表达式中有多个语句:

=(IIF(Fields.Test1,Value="x", "Bold". "Normal") OR (Fields,Test2,Value="x", "Bold", "Normal") etc etc =(IIF(Fields.Test1,Value="x", "Bold". "Normal") OR (Fields,Test2,Value="x", "Bold", "Normal") 等等

I think I need to create a custom code function then call the function where needed in the expression but I haven't a clue where to start.我想我需要创建一个自定义代码 function 然后在表达式中需要的地方调用 function 但我不知道从哪里开始。 Any help would be greatly appreciated.任何帮助将不胜感激。

Update:更新:

Switch is working but bolding whole expression not just values specified within Placeholder Properties of expression. Switch 正在工作,但将整个表达式加粗,而不仅仅是表达式的占位符属性中指定的值。 I believe this is because my main expression has concatenated fields creating one long string.我相信这是因为我的主要表达式连接了创建一个长字符串的字段。

Placeholder exp占位符 exp

Result结果

Value exp价值经验

+-----------+------------+-----------+------------------+------------------+-----------+-----------+------------+-----------+-------------------+---------+--------------+-----------+----------------+-------------------------------+-----------------+---------------+--------------+----------+------------------+------------------+------------------+------------------+------------+---+------------+-----------+-------------------+-----------+--------------+-----------+----------------+---------+----------+-------------------+----------------------+---------------+----------------+---------+
| id_number | first_name | last_name | pref_address_ind | h_addr_type_code | h_care_of | h_street1 | h_street2  | h_street3 | h_foreign_cityzip | h_city  | h_state_code | h_zipcode | h_country_code |        h_email_address        | p_email_address |    h_phone    |              | hc_phone | b_company_name_1 | b_company_name_2 | b_business_title | fld_of_work_code | b_street1  |   | b_street2  | b_street3 | b_foreign_cityzip |  b_city   | b_state_code | b_zipcode | b_country_code | b_phone | bc_phone |  b_email_address  |                      | full_business | pref_email_ind | Main_ID |
+-----------+------------+-----------+------------------+------------------+-----------+-----------+------------+-----------+-------------------+---------+--------------+-----------+----------------+-------------------------------+-----------------+---------------+--------------+----------+------------------+------------------+------------------+------------------+------------+---+------------+-----------+-------------------+-----------+--------------+-----------+----------------+---------+----------+-------------------+----------------------+---------------+----------------+---------+
|    165815 | Test       | Test1     | NULL             |                  | NULL      | NULL      | x Apt #09  | NULL      | NULL              | NULL    | NULL         | NULL      | x USA          | NULL                          | NULL            | DELETED       |              | DELETED  | NULL             | ~                | NULL             | NULL             | NULL       |   | NULL       | NULL      | NULL              | NULL      | NULL         | NULL      | NULL           | NULL    | NULL     | NULL              |                      | NULL          | NULL           |  165815 |
|    165816 | Test       | Test2     | NULL             |                  | NULL      | Street    | x Street 1 | x Street2 | NULL              | Houston | NULL         | NULL      | NULL           | x Home Email:testing@test.com | NULL            | x Home Phone: | 111-111-1111 | NULL     | NULL             | ~                | NULL             | NULL             | x Business | 1 | x Street 2 | NULL      | NULL              | x Houston | x TX         | x 77777   | NULL           | NULL    | NULL     | x Business Email: | btesting@testing.com | NULL          | NULL           |  165816 |
+-----------+------------+-----------+------------------+------------------+-----------+-----------+------------+-----------+-------------------+---------+--------------+-----------+----------------+-------------------------------+-----------------+---------------+--------------+----------+------------------+------------------+------------------+------------------+------------+---+------------+-----------+-------------------+-----------+--------------+-----------+----------------+---------+----------+-------------------+----------------------+---------------+----------------+---------+

There should be no need for custom code although depending on how complex the rules are you may want to consider SWITCH .应该不需要自定义代码,但根据规则的复杂程度,您可能需要考虑SWITCH

Based on your simple example you could do either of these根据您的简单示例,您可以执行以下任一操作

=IIF(
     Fields!Test1.Value = "x" OR Fields!Test2.Value = "x",
     "Bold", 
     Nothing)

or for a more complex situation或更复杂的情况

= SWITCH (
          Fields!Test1l.Value = "x" OR Fields!Test2.Value="x", "Bold",
          Feilds!Test3.Value = "Z" AND Fields!Test4.Value >10, "SemiBold",
          True, Nothing)

SWITCH Evaluates each expression/result pair and stops when it hits the first that evalutes to True . SWITCH计算每个表达式/结果对,并在遇到第一个计算结果为True时停止。 The final 'True, Nothing' acts like an else.最后的“True, Nothing”就像一个 else。 SWITCH if easier to read than nested IIF s but IIF can be simpler if the rules are simple. SWITCH如果比嵌套的IIF更容易阅读,但如果规则简单, IIF可以更简单。

UPDATE:更新:

The following shows doing this using HTML generated in the dataset query.下面显示了使用数据集查询中生成的 HTML 执行此操作。 I know next to nothing about HTML this this may be fixable but here's where I got to....我对 HTML 几乎一无所知,这可能是可以修复的,但这就是我要去的地方......

Based on your sample table I created a new column with a HTML version of the address using </p> to create the line breaks.根据您的示例表,我创建了一个带有 HTML 版本的地址的新列,使用</p>创建换行符。

It also suppresses blank rows.它还抑制空白行。

The sql looks something like sql 看起来像

SELECT 
    HomeAddrFormattedP1 = '<p>Home Address: </p>' 
                        + IIF( ISNULL(h_street1,'')='', '', IIF( LEFT(h_street1,1) = 'x', '<b>' + h_street1 + '</b></p>', h_street1 + '</p>') )
                        + IIF( ISNULL(h_street2,'')='', '', IIF( LEFT(h_street2,1) = 'x', '<b>' + h_street2 + '</b></p>', h_street2 + '</p>') )
                        + IIF( ISNULL(h_street3,'')='', '', IIF( LEFT(h_street3,1) = 'x', '<b>' + h_street3 + '</b></p>', h_street3 + '</p>') )
                        + IIF( ISNULL(h_foreign_cityzip,'')='', '', IIF( LEFT(h_foreign_cityzip,1) = 'x', '<b>' + h_foreign_cityzip + '</b></p>', h_foreign_cityzip + '</p>') )
                        + IIF( ISNULL(h_city,'')='', '', IIF( LEFT(h_city,1) = 'x', '<b>' + h_city + '</b></p>', h_city + '</p>') )
                        + IIF( ISNULL(h_state_code,'')='', '', IIF( LEFT(h_state_code,1) = 'x', '<b>' + h_state_code + '</b></p>', h_state_code + '</p>') )
                        + IIF( ISNULL(h_zipcode,'')='', '', IIF( LEFT(h_zipcode,1) = 'x', '<b>' + h_zipcode + '</b></p>', h_zipcode + '</p>') )
                        + IIF( ISNULL(h_country_code,'')='', '', IIF( LEFT(h_country_code,1) = 'x', '<b>' + h_country_code + '</b></p>', h_country_code + '</p>') )                        
    , 
    *
FROM myTable

Using this as my report's dataset query I then added a simple table with 3 columns one for HomeAddrFormattedP1 , first_name and last_name使用它作为我报告的数据集查询,然后我添加了一个简单的表,其中包含 3 列,分别用于HomeAddrFormattedP1first_namelast_name

All I did then was right-click the HomeAddrFormattedP1 placeholder and set its properties to Markup Type = HTML我所做的只是右键单击HomeAddrFormattedP1占位符并将其属性设置为 Markup Type = HTML

This gave the following final result.这给出了以下最终结果。

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM