I'm trying to make multiple values "Bold" within an expression when the value contains "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:
=(IIF(Fields!Test1.Value="x", "Bold", "Normal") OR (Fields!Test2.Value="x", "Bold", "Normal") etc etc
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! Any help would be greatly appreciated.
Update:
Switch is working but bolding whole expression not just values specified within Placeholder Properties of expression. I believe this is because my main expression has concatenated fields creating one long string.
+-----------+------------+-----------+------------------+------------------+-----------+-----------+------------+-----------+-------------------+---------+--------------+-----------+----------------+-------------------------------+-----------------+---------------+--------------+----------+------------------+------------------+------------------+------------------+------------+---+------------+-----------+-------------------+-----------+--------------+-----------+----------------+---------+----------+-------------------+----------------------+---------------+----------------+---------+
| 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
.
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
. The final 'True, Nothing' acts like an else. SWITCH
if easier to read than nested IIF
s but IIF
can be simpler if the rules are simple.
UPDATE:
The following shows doing this using HTML generated in the dataset query. I know next to nothing about HTML this this may be fixable but here's where I got to ....
Based on your sample table I created a new column with a HTML version of the address using </p>
to create the line breaks.
It also suppresses blank rows.
The sql looks something like
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
All I did then was right-click the HomeAddrFormattedP1
placeholder and set its properties to Markup Type = HTML
This gave the following final result.