Solved

Formula to concatenate multiple boolean fields with a delimiter

Posted on 2016-09-12
4
53 Views
Last Modified: 2016-09-14
Gurus,

I need a formula to concatenate and separate 6 Boolean fields together where one or more may be true.

For instance, Field 1 may be True or False.  If True then "Field 1" else ""

I need the formula output result to be:
Field 1
or
Field 2
or
Field 1, Field 2
or
Field 2, Field 4

etc, etc.  I'm adding a comma to separate the values for readability.

Here's the formula I'm using that's close but it's adding a "comma" after conditions where only one field is True


Local StringVar strOut;

if Not(isnull({CONTACT.Automation})) AND {CONTACT.Automation} = True then
    strOut := "RA" & ", ";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Hardfacing} = True then
    strOut := strOut + "RH" & ", ";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Industrial} = True then
    strOut := strOut + "IND" & ", ";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.PMA} = True then
    strOut := strOut + "PMA" & ", ";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Tactical} = True then
    strOut := strOut + "TAC" & ", ";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Underwater} = True then
    strOut := strOut + "UW" & ", ";
Mid(strOut,1)


What am I missing?  Thanks in advance!!
0
Comment
Question by:SStroz
  • 2
4 Comments
 
LVL 100

Expert Comment

by:mlmcc
ID: 41795125
You could change the last line to

Left(strOut, Length(strOut)-1)

or

Mid(strOut, 1, Length(strOut)-1)


mlmcc
0
 
LVL 34

Accepted Solution

by:
James0628 earned 500 total points
ID: 41795770
Another option is to put the comma in front of each value, and then use Mid to exclude the first comma from the output.

Local StringVar strOut;

if Not(isnull({CONTACT.Automation})) AND {CONTACT.Automation} = True then
    strOut :=  ", " + "RA";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Hardfacing} = True then
    strOut := strOut + ", " + "RH";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Industrial} = True then
    strOut := strOut + ", " + "IND";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.PMA} = True then
    strOut := strOut + ", " + "PMA";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Tactical} = True then
    strOut := strOut + ", " + "TAC";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Underwater} = True then
    strOut := strOut + ", " + "UW";

if Length (strOut) > 2 then
  Mid(strOut,3)
else
  strOut

Open in new window


 James
0
 
LVL 7

Author Comment

by:SStroz
ID: 41797121
mlmcc, your formula gave me this error:

String length is less than 0 or not an integer


I used James solution for this one.


Many thanks to both of you!!!
0
 
LVL 34

Expert Comment

by:James0628
ID: 41797609
You're welcome.

 FWIW, the error on mlmcc's formula was probably from records where none of your conditions were true, so you ended up with an empty string.  Then Length (strOut) - 1 would give you -1, which would give you that error.

 You could handle that using

if Length (strOut) > 1 then
  Left(strOut, Length(strOut)-1)

  or

if Length (strOut) > 1 then
  Mid(strOut, 1, Length(strOut)-1)


 James
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Crystal Reports: 5 Tests for Top Performance It is complete, your masterpiece report.  Not only does it meet your customer’s expectations, it blows them out the water, all they want is beautifully summarised and displayed in a myriad of ways. …
I hate sub reports and always consider them the last resort in any reporting solution.  The negative effect on performance and maintainability is just not worth the easy ride they give the report writer.  Nine times out of ten reporting requirements…
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …

810 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question